From ca8b0b80370b2b5ac70354b243252839908930b1 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 15 五月 2019 17:38:53 +0800
Subject: [PATCH] 860312 机器人同步 需策划改挂机推荐两张表
---
Tool/RobotTest/Main.py | 2
Tool/RobotTest/Data/MapEventPoint.txt | 116
Tool/Robot/Protocol/PacketsReceivedPY.py | 8415 +++++++++++++++----
Tool/RobotTest/Protocol/PacketsReceived.py | 162
Tool/RobotTest/Protocol/PacketsReceivedPY.py | 8415 +++++++++++++++----
Tool/RobotTest/Protocol/PacketsSend.py | 40
Tool/RobotTest/DataReader/MapEventPointReader.py | 22
Tool/Robot/Protocol/PacketsReceived.py | 162
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/imba.py | 16
Tool/RobotTest/Protocol/PacketsSendPY.py | 3788 +++++---
Tool/RobotTest/AI/AIFile/AILoginout.py | 16
Tool/Robot/Protocol/PacketsSend.py | 40
Tool/Robot/Protocol/PacketsSendPY.py | 3788 +++++---
13 files changed, 17,972 insertions(+), 7,010 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/imba.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/imba.py
index cc9223f..bec6cc7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/imba.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/imba.py
@@ -40,6 +40,12 @@
for fbaoID in [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204]:
SetFabao.OnExec(curPlayer, [fbaoID])
+ curMission = curPlayer.FindMission(1)
+ if not curMission:
+ GameWorld.DebugAnswer(curPlayer, "玩家没有该任务,missionID=%s" % 1)
+ return
+ curMission.SetProperty("OpenMap", 12)
+
# 被动
passiveSkillList = [50900, 50902] if curPlayer.GetJob() == 1 else [55900, 55902]
for skillID in passiveSkillList:
@@ -54,14 +60,12 @@
ActiveHorse.OnExec(curPlayer, [i, 5])
# 5.给基础属性
- curPlayer.SetBaseSTR(1000)
- curPlayer.SetBasePNE(1000)
- curPlayer.SetBasePHY(1000)
- curPlayer.SetBaseCON(1000000)
- curPlayer.SetGold(9999999)
+ for attrID in xrange(201, 206):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AddPointValue % attrID, 10000)
+ curPlayer.SetGold(99999)
# 6.背包丢些东西
- MakeItemCount.OnExec(curPlayer, [10161, 50])
+ MakeItemCount.OnExec(curPlayer, [260, 50])
curPlayer.SetLV(lv)
curPlayer.RefreshView()
diff --git a/Tool/Robot/Protocol/PacketsReceived.py b/Tool/Robot/Protocol/PacketsReceived.py
index d1edd16..4a6de90 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):
@@ -7061,67 +7061,36 @@
#03 09 主角登录时候的简短信息#tagPlayerLoginInfo
class tagLoginInfoEquip(Structure):
- ItemPlace = 0 #(BYTE ItemPlace)
- ItemID = 0 #(DWORD ItemID)
- IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
- UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//size = UserDataLen
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.ItemPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.ItemPlace = 0
self.ItemID = 0
- self.IsSuite = 0
- self.UserDataLen = 0
- self.UserData = ""
return
def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 1
- length += 4
- length += len(self.UserData)
-
- return length
+ return sizeof(tagLoginInfoEquip)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.ItemPlace)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteBYTE(data, self.IsSuite)
- data = CommFunc.WriteDWORD(data, self.UserDataLen)
- data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- ItemPlace:%d,
- ItemID:%d,
- IsSuite:%d,
- UserDataLen:%d,
- UserData:%s
+ DumpString = '''//03 09 主角登录时候的简短信息//tagPlayerLoginInfo:
+ ItemID:%d
'''\
%(
- self.ItemPlace,
- self.ItemID,
- self.IsSuite,
- self.UserDataLen,
- self.UserData
+ self.ItemID
)
return DumpString
@@ -8054,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):
@@ -8593,67 +8562,36 @@
#04 34 周围玩家出现合并封包#tagAreaPlayerAppearEx
class tagEquipInfo(Structure):
- Place = 0 #(BYTE Place)//装备位置
- ItemID = 0 #(DWORD ItemID)//物品ID
- IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
- UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)// 附加数据
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int), #物品ID
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.Place,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.Place = 0
self.ItemID = 0
- self.IsSuite = 0
- self.UserDataLen = 0
- self.UserData = ""
return
def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 1
- length += 4
- length += len(self.UserData)
-
- return length
+ return sizeof(tagEquipInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.Place)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteBYTE(data, self.IsSuite)
- data = CommFunc.WriteDWORD(data, self.UserDataLen)
- data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- Place:%d,
- ItemID:%d,
- IsSuite:%d,
- UserDataLen:%d,
- UserData:%s
+ DumpString = '''//04 34 周围玩家出现合并封包//tagAreaPlayerAppearEx:
+ ItemID:%d
'''\
%(
- self.Place,
- self.ItemID,
- self.IsSuite,
- self.UserDataLen,
- self.UserData
+ self.ItemID
)
return DumpString
@@ -8724,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
@@ -10132,7 +10070,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位
+ ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位
]
def __init__(self):
@@ -10180,7 +10118,7 @@
#------------------------------------------------------
-#04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
+#04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
class tagPlayerFamilyNameRefresh(Structure):
Head = tagHead()
@@ -10258,7 +10196,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):
@@ -13602,7 +13540,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):
@@ -14020,7 +13958,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
]
@@ -15108,7 +15046,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
]
@@ -20627,7 +20565,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)//扩展属性
@@ -20791,7 +20729,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
@@ -21968,7 +21906,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):
@@ -22299,7 +22237,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)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
@@ -23765,7 +23703,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):
@@ -24365,7 +24303,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
@@ -27054,8 +26992,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):
@@ -27189,7 +27127,7 @@
("SubCmd", c_ubyte),
("FormID", c_int), # 挂单ID
("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
- ("LefGold", c_int), #该单的剩余购买元宝组数
+ ("LefGold", c_int), #该单的剩余购买元宝组数
("LeftTime", c_ushort), #该单的剩余在架时间
]
@@ -27478,7 +27416,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("LabelID", c_int), # 删除标签
+ ("LabelID", c_int), # 删除标签
]
def __init__(self):
@@ -28719,7 +28657,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):
@@ -28981,7 +28919,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):
@@ -29108,7 +29046,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):
@@ -29281,7 +29219,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)//出售价格
@@ -29668,4 +29606,4 @@
m_NAtagGMCmdAnswer=tagGMCmdAnswer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
diff --git a/Tool/Robot/Protocol/PacketsReceivedPY.py b/Tool/Robot/Protocol/PacketsReceivedPY.py
index 49baa51..23de93b 100644
--- a/Tool/Robot/Protocol/PacketsReceivedPY.py
+++ b/Tool/Robot/Protocol/PacketsReceivedPY.py
@@ -196,40 +196,60 @@
# A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
class tagGCFBLineInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("FBLineID", c_ubyte), # 功能线路ID
- ("PlayerCnt", c_ushort), # 线路当前玩家数
- ]
+ FBLineID = 0 #(BYTE FBLineID)// 功能线路ID
+ PlayerCnt = 0 #(WORD PlayerCnt)// 线路当前玩家数
+ ExtraStrLen = 0 #(WORD ExtraStrLen)// 长度
+ ExtraStr = "" #(String ExtraStr)// 额外信息
+ data = None
def __init__(self):
self.Clear()
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ self.FBLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExtraStrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExtraStr,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraStrLen)
+ return _pos
def Clear(self):
self.FBLineID = 0
self.PlayerCnt = 0
+ self.ExtraStrLen = 0
+ self.ExtraStr = ""
return
def GetLength(self):
- return sizeof(tagGCFBLineInfo)
+ length = 0
+ length += 1
+ length += 2
+ length += 2
+ length += len(self.ExtraStr)
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.FBLineID)
+ data = CommFunc.WriteWORD(data, self.PlayerCnt)
+ data = CommFunc.WriteWORD(data, self.ExtraStrLen)
+ data = CommFunc.WriteString(data, self.ExtraStrLen, self.ExtraStr)
+ return data
def OutputString(self):
- DumpString = '''// A0 07 副本地图功能线路人数 //tagGCFBLinePlayerCnt:
+ DumpString = '''
FBLineID:%d,
- PlayerCnt:%d
+ PlayerCnt:%d,
+ ExtraStrLen:%d,
+ ExtraStr:%s
'''\
%(
self.FBLineID,
- self.PlayerCnt
+ self.PlayerCnt,
+ self.ExtraStrLen,
+ self.ExtraStr
)
return DumpString
@@ -809,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):
@@ -876,6 +896,58 @@
m_NAtagUniversalGameRecInfo=tagUniversalGameRecInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUniversalGameRecInfo.Head.Cmd,m_NAtagUniversalGameRecInfo.Head.SubCmd))] = m_NAtagUniversalGameRecInfo
+
+
+#------------------------------------------------------
+# A4 0C 多仙盟boss活动信息 #tagGCAllFamilyBossInfo
+
+class tagGCAllFamilyBossInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsEnd", c_ubyte), # 是否已结束
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0C
+ 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 = 0x0C
+ self.IsEnd = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCAllFamilyBossInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A4 0C 多仙盟boss活动信息 //tagGCAllFamilyBossInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ IsEnd:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsEnd
+ )
+ return DumpString
+
+
+m_NAtagGCAllFamilyBossInfo=tagGCAllFamilyBossInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAllFamilyBossInfo.Cmd,m_NAtagGCAllFamilyBossInfo.SubCmd))] = m_NAtagGCAllFamilyBossInfo
#------------------------------------------------------
@@ -1061,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):
@@ -2909,8 +2981,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):
@@ -3299,21 +3371,17 @@
#------------------------------------------------------
-#A9 05 天梯竞技场每日奖励信息#tagGCHighLadderRewardInfo
+# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
-class tagGCHighLadderRewardInfo(Structure):
+class tagGCNotifyEquipClassEquip(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("hadGot", c_ubyte), #是否已领取
- ("Order", c_ushort), #奖励排名
+ ("ItemID", c_int),
+ ("Star", c_ubyte),
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0x05
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -3322,36 +3390,168 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA9
- self.SubCmd = 0x05
- self.hadGot = 0
- self.Order = 0
+ self.ItemID = 0
+ self.Star = 0
return
def GetLength(self):
- return sizeof(tagGCHighLadderRewardInfo)
+ return sizeof(tagGCNotifyEquipClassEquip)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A9 05 天梯竞技场每日奖励信息//tagGCHighLadderRewardInfo:
- Cmd:%s,
- SubCmd:%s,
- hadGot:%d,
- Order:%d
+ DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo:
+ ItemID:%d,
+ Star:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.hadGot,
- self.Order
+ self.ItemID,
+ self.Star
)
return DumpString
-m_NAtagGCHighLadderRewardInfo=tagGCHighLadderRewardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHighLadderRewardInfo.Cmd,m_NAtagGCHighLadderRewardInfo.SubCmd))] = m_NAtagGCHighLadderRewardInfo
+class tagGCNotifyEquipDetailInfo(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ ItemID = 0 #(DWORD ItemID)
+ Star = 0 #(BYTE Star)//星级
+ PlusLV = 0 #(WORD PlusLV)//强化等级
+ EvolveLV = 0 #(BYTE EvolveLV)//进化等级
+ WashLV = 0 #(BYTE WashLV)//洗练等级
+ WashValueCount = 0 #(BYTE WashValueCount)
+ WashValueList = list() #(vector<WORD> WashValueList)//洗练值
+ StoneIDCount = 0 #(BYTE StoneIDCount)
+ StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石
+ ClassEquipCount = 0 #(BYTE ClassEquipCount)
+ ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ 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)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.WashValueCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.WashValueList.append(value)
+ self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.StoneIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.StoneIDList.append(value)
+ self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ClassEquipCount):
+ temClassEquipList = tagGCNotifyEquipClassEquip()
+ _pos = temClassEquipList.ReadData(_lpData, _pos)
+ self.ClassEquipList.append(temClassEquipList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ self.ItemGUID = ""
+ self.ItemID = 0
+ self.Star = 0
+ self.PlusLV = 0
+ self.EvolveLV = 0
+ self.WashLV = 0
+ self.WashValueCount = 0
+ self.WashValueList = list()
+ self.StoneIDCount = 0
+ self.StoneIDList = list()
+ self.ClassEquipCount = 0
+ self.ClassEquipList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+ length += 4
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 1
+ length += 2 * self.WashValueCount
+ length += 1
+ length += 4 * self.StoneIDCount
+ length += 1
+ for i in range(self.ClassEquipCount):
+ length += self.ClassEquipList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteBYTE(data, self.Star)
+ data = CommFunc.WriteWORD(data, self.PlusLV)
+ data = CommFunc.WriteBYTE(data, self.EvolveLV)
+ data = CommFunc.WriteBYTE(data, self.WashLV)
+ data = CommFunc.WriteBYTE(data, self.WashValueCount)
+ for i in range(self.WashValueCount):
+ data = CommFunc.WriteWORD(data, self.WashValueList[i])
+ data = CommFunc.WriteBYTE(data, self.StoneIDCount)
+ for i in range(self.StoneIDCount):
+ data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
+ data = CommFunc.WriteBYTE(data, self.ClassEquipCount)
+ for i in range(self.ClassEquipCount):
+ data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s,
+ ItemID:%d,
+ Star:%d,
+ PlusLV:%d,
+ EvolveLV:%d,
+ WashLV:%d,
+ WashValueCount:%d,
+ WashValueList:%s,
+ StoneIDCount:%d,
+ StoneIDList:%s,
+ ClassEquipCount:%d,
+ ClassEquipList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID,
+ self.ItemID,
+ self.Star,
+ self.PlusLV,
+ self.EvolveLV,
+ self.WashLV,
+ self.WashValueCount,
+ "...",
+ self.StoneIDCount,
+ "...",
+ self.ClassEquipCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
#------------------------------------------------------
@@ -3747,7 +3947,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -3988,7 +4188,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):
@@ -4113,124 +4313,6 @@
m_NAtagGCRecommendFriendsInfo=tagGCRecommendFriendsInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRecommendFriendsInfo.Head.Cmd,m_NAtagGCRecommendFriendsInfo.Head.SubCmd))] = m_NAtagGCRecommendFriendsInfo
-
-
-#------------------------------------------------------
-# A9 07 定时商店刷新倒计时 #tagGCShopRefreshTimeList
-
-class tagGCShopRefreshTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", c_int), # 商店ID
- ("RemainSecond", c_int), # 多少秒后刷新
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA9
- 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 = 0xA9
- self.SubCmd = 0x07
- self.ShopID = 0
- self.RemainSecond = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCShopRefreshTime)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 07 定时商店刷新倒计时 //tagGCShopRefreshTimeList:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d,
- RemainSecond:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID,
- self.RemainSecond
- )
- return DumpString
-
-
-class tagGCShopRefreshTimeList(Structure):
- Head = tagHead()
- ShopCnt = 0 #(BYTE ShopCnt)//商店信息个数
- ShopTimeInfoList = list() #(vector<tagGCShopRefreshTime> ShopTimeInfoList)//商店信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x07
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ShopCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ShopCnt):
- temShopTimeInfoList = tagGCShopRefreshTime()
- _pos = temShopTimeInfoList.ReadData(_lpData, _pos)
- self.ShopTimeInfoList.append(temShopTimeInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x07
- self.ShopCnt = 0
- self.ShopTimeInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.ShopCnt):
- length += self.ShopTimeInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ShopCnt)
- for i in range(self.ShopCnt):
- data = CommFunc.WriteString(data, self.ShopTimeInfoList[i].GetLength(), self.ShopTimeInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ShopCnt:%d,
- ShopTimeInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ShopCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCShopRefreshTimeList=tagGCShopRefreshTimeList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCShopRefreshTimeList.Head.Cmd,m_NAtagGCShopRefreshTimeList.Head.SubCmd))] = m_NAtagGCShopRefreshTimeList
#------------------------------------------------------
@@ -4695,6 +4777,151 @@
#------------------------------------------------------
+# AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
+
+class tagGCFeastRedPacketDay(Structure):
+ RedPacketCount = 0 #(BYTE RedPacketCount)
+ RedPacketIDList = list() #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RedPacketCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.RedPacketIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.RedPacketCount = 0
+ self.RedPacketIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.RedPacketCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.RedPacketCount)
+ for i in range(self.RedPacketCount):
+ data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ RedPacketCount:%d,
+ RedPacketIDList:%s
+ '''\
+ %(
+ self.RedPacketCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCFeastRedPacketInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
+ RedPacketDays = 0 #(BYTE RedPacketDays)
+ RedPacketDayList = list() #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x11
+ 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RedPacketDays):
+ temRedPacketDayList = tagGCFeastRedPacketDay()
+ _pos = temRedPacketDayList.ReadData(_lpData, _pos)
+ self.RedPacketDayList.append(temRedPacketDayList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x11
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.ResetType = 0
+ self.RedPacketDays = 0
+ self.RedPacketDayList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.RedPacketDays):
+ length += self.RedPacketDayList[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.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteBYTE(data, self.RedPacketDays)
+ for i in range(self.RedPacketDays):
+ data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ ResetType:%d,
+ RedPacketDays:%d,
+ RedPacketDayList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.ResetType,
+ self.RedPacketDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
+
+
+#------------------------------------------------------
# AC 02 通知仙魔之争信息 #tagGCXMZZInfo
class tagGCXMZZInfo(Structure):
@@ -4879,171 +5106,55 @@
#------------------------------------------------------
-# AC 01 通知领地争夺占领情况 #tagGCManorWarInfo
+# AC 07 骑宠Boss信息 #tagGCHorsePetBossInfo
-class tagGCManorInfo(Structure):
- Head = tagHead()
- MapID = 0 #(DWORD MapID)// 领地地图id
- FamilyID = 0 #(DWORD FamilyID)// 占领战盟id
- FNameLen = 0 #(BYTE FNameLen)// 战盟名字长度
- FamilyName = "" #(String FamilyName)// 战盟名 size = FNameLen
- LNameLen = 0 #(BYTE LNameLen)// 盟主名字长度
- LeaderName = "" #(String LeaderName)// 盟主名 size = LNameLen
- OccupyDays = 0 #(WORD OccupyDays)// 连续占领天数
- LastFamilyID = 0 #(DWORD LastFamilyID)// 上次占领的战盟id
- data = None
+class tagGCHorsePetBossInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsEnd", c_int), # 是否已结束(按位代表对应线路是否结束)
+ ]
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
+ self.Cmd = 0xAC
+ self.SubCmd = 0x07
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FNameLen)
- self.LNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LNameLen)
- self.OccupyDays,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LastFamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
- self.MapID = 0
- self.FamilyID = 0
- self.FNameLen = 0
- self.FamilyName = ""
- self.LNameLen = 0
- self.LeaderName = ""
- self.OccupyDays = 0
- self.LastFamilyID = 0
+ self.Cmd = 0xAC
+ self.SubCmd = 0x07
+ self.IsEnd = 0
return
def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 4
- length += 1
- length += len(self.FamilyName)
- length += 1
- length += len(self.LeaderName)
- length += 2
- length += 4
-
- return length
+ return sizeof(tagGCHorsePetBossInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteDWORD(data, self.FamilyID)
- data = CommFunc.WriteBYTE(data, self.FNameLen)
- data = CommFunc.WriteString(data, self.FNameLen, self.FamilyName)
- data = CommFunc.WriteBYTE(data, self.LNameLen)
- data = CommFunc.WriteString(data, self.LNameLen, self.LeaderName)
- data = CommFunc.WriteWORD(data, self.OccupyDays)
- data = CommFunc.WriteDWORD(data, self.LastFamilyID)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- Head:%s,
- MapID:%d,
- FamilyID:%d,
- FNameLen:%d,
- FamilyName:%s,
- LNameLen:%d,
- LeaderName:%s,
- OccupyDays:%d,
- LastFamilyID:%d
+ DumpString = '''// AC 07 骑宠Boss信息 //tagGCHorsePetBossInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ IsEnd:%d
'''\
%(
- self.Head.OutputString(),
- self.MapID,
- self.FamilyID,
- self.FNameLen,
- self.FamilyName,
- self.LNameLen,
- self.LeaderName,
- self.OccupyDays,
- self.LastFamilyID
+ self.Cmd,
+ self.SubCmd,
+ self.IsEnd
)
return DumpString
-class tagGCManorWarInfo(Structure):
- Head = tagHead()
- ManorCnt = 0 #(BYTE ManorCnt)//领地个数
- ManorInfoList = list() #(vector<tagGCManorInfo> ManorInfoList)//领地信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ManorCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ManorCnt):
- temManorInfoList = tagGCManorInfo()
- _pos = temManorInfoList.ReadData(_lpData, _pos)
- self.ManorInfoList.append(temManorInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
- self.ManorCnt = 0
- self.ManorInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.ManorCnt):
- length += self.ManorInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ManorCnt)
- for i in range(self.ManorCnt):
- data = CommFunc.WriteString(data, self.ManorInfoList[i].GetLength(), self.ManorInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ManorCnt:%d,
- ManorInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ManorCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCManorWarInfo=tagGCManorWarInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCManorWarInfo.Head.Cmd,m_NAtagGCManorWarInfo.Head.SubCmd))] = m_NAtagGCManorWarInfo
+m_NAtagGCHorsePetBossInfo=tagGCHorsePetBossInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHorsePetBossInfo.Cmd,m_NAtagGCHorsePetBossInfo.SubCmd))] = m_NAtagGCHorsePetBossInfo
#------------------------------------------------------
@@ -5274,6 +5385,91 @@
#------------------------------------------------------
+# AC 0B 新仙界盛典活动信息 #tagGCNewFairyCeremonyInfo
+
+class tagGCNewFairyCeremonyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ WorldLV = 0 #(WORD WorldLV)// 世界等级
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x0B
+ 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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x0B
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.WorldLV = 0
+ self.LimitLV = 0
+ self.ResetType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 2
+ length += 1
+
+ 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.WriteWORD(data, self.WorldLV)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ WorldLV:%d,
+ LimitLV:%d,
+ ResetType:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.WorldLV,
+ self.LimitLV,
+ self.ResetType
+ )
+ return DumpString
+
+
+m_NAtagGCNewFairyCeremonyInfo=tagGCNewFairyCeremonyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNewFairyCeremonyInfo.Head.Cmd,m_NAtagGCNewFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCNewFairyCeremonyInfo
+
+
+#------------------------------------------------------
# AC 05 红包删除 #tagGCRedPacketDel
class tagGCRedPacketDel(Structure):
@@ -5426,132 +5622,6 @@
#------------------------------------------------------
-# AD 01 特惠活动信息 #tagGCTeHuiActivityInfoList
-
-class tagGCTeHuiActivityInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActivityType", c_ubyte), # 活动类型
- ("ActivityValue", c_int), # 活动值
- ("StartDate", c_int), # 开始时间time
- ("EndDate", c_int), # 结束时间time
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAD
- 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 = 0xAD
- self.SubCmd = 0x01
- self.ActivityType = 0
- self.ActivityValue = 0
- self.StartDate = 0
- self.EndDate = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCTeHuiActivityInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AD 01 特惠活动信息 //tagGCTeHuiActivityInfoList:
- Cmd:%s,
- SubCmd:%s,
- ActivityType:%d,
- ActivityValue:%d,
- StartDate:%d,
- EndDate:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActivityType,
- self.ActivityValue,
- self.StartDate,
- self.EndDate
- )
- return DumpString
-
-
-class tagGCTeHuiActivityInfoList(Structure):
- Head = tagHead()
- ActivityCount = 0 #(BYTE ActivityCount)//活动信息个数
- ActivityInfoList = list() #(vector<tagGCTeHuiActivityInfo> ActivityInfoList)//活动信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAD
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActivityCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ActivityCount):
- temActivityInfoList = tagGCTeHuiActivityInfo()
- _pos = temActivityInfoList.ReadData(_lpData, _pos)
- self.ActivityInfoList.append(temActivityInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAD
- self.Head.SubCmd = 0x01
- self.ActivityCount = 0
- self.ActivityInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.ActivityCount):
- length += self.ActivityInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActivityCount)
- for i in range(self.ActivityCount):
- data = CommFunc.WriteString(data, self.ActivityInfoList[i].GetLength(), self.ActivityInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActivityCount:%d,
- ActivityInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActivityCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCTeHuiActivityInfoList=tagGCTeHuiActivityInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeHuiActivityInfoList.Head.Cmd,m_NAtagGCTeHuiActivityInfoList.Head.SubCmd))] = m_NAtagGCTeHuiActivityInfoList
-
-
-#------------------------------------------------------
# AE 05 镖车开始时间 #tagGCTruckStartTime
class tagGCTruckStartTime(Structure):
@@ -5668,7 +5738,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):
@@ -5881,6 +5951,7 @@
RealmLV = 0 #(WORD RealmLV)//境界
OnlineType = 0 #(BYTE OnlineType)//在线状态, 0 不在线 1在线
IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍
+ ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID
data = None
def __init__(self):
@@ -5899,6 +5970,7 @@
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -5913,6 +5985,7 @@
self.RealmLV = 0
self.OnlineType = 0
self.IsInTeam = 0
+ self.ServerGroupID = 0
return
def GetLength(self):
@@ -5925,6 +5998,7 @@
length += 2
length += 1
length += 1
+ length += 4
return length
@@ -5938,6 +6012,7 @@
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteBYTE(data, self.OnlineType)
data = CommFunc.WriteBYTE(data, self.IsInTeam)
+ data = CommFunc.WriteDWORD(data, self.ServerGroupID)
return data
def OutputString(self):
@@ -5949,7 +6024,8 @@
LV:%d,
RealmLV:%d,
OnlineType:%d,
- IsInTeam:%d
+ IsInTeam:%d,
+ ServerGroupID:%d
'''\
%(
self.Head.OutputString(),
@@ -5959,7 +6035,8 @@
self.LV,
self.RealmLV,
self.OnlineType,
- self.IsInTeam
+ self.IsInTeam,
+ self.ServerGroupID
)
return DumpString
@@ -6410,7 +6487,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
("Value", c_int),
]
@@ -6466,7 +6543,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)
@@ -6589,6 +6666,1532 @@
m_NAtagGCVoiceChat=tagGCVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
+
+
+#------------------------------------------------------
+# B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
+
+class tagGCAddAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ ItemID = 0 #(DWORD ItemID)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.ItemGUID,
+ self.ItemID
+ )
+ return DumpString
+
+
+class tagGCAddAuctionItemInfo(Structure):
+ Head = tagHead()
+ AddCount = 0 #(BYTE AddCount)
+ AddAuctionItemList = list() #(vector<tagGCAddAuctionItem> AddAuctionItemList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AddCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AddCount):
+ temAddAuctionItemList = tagGCAddAuctionItem()
+ _pos = temAddAuctionItemList.ReadData(_lpData, _pos)
+ self.AddAuctionItemList.append(temAddAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x04
+ self.AddCount = 0
+ self.AddAuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AddCount):
+ length += self.AddAuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AddCount)
+ for i in range(self.AddCount):
+ data = CommFunc.WriteString(data, self.AddAuctionItemList[i].GetLength(), self.AddAuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AddCount:%d,
+ AddAuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AddCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAddAuctionItemInfo=tagGCAddAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAddAuctionItemInfo.Head.Cmd,m_NAtagGCAddAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAddAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 07 拍卖行关注的物品ID #tagGCAttentionAuctionItemID
+
+class tagGCAttentionAuctionItemID(Structure):
+ Head = tagHead()
+ AttentionCount = 0 #(BYTE AttentionCount)
+ AttentionItemIDList = list() #(vector<DWORD> AttentionItemIDList)// 关注的物品ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AttentionCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AttentionCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.AttentionItemIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x07
+ self.AttentionCount = 0
+ self.AttentionItemIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.AttentionCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AttentionCount)
+ for i in range(self.AttentionCount):
+ data = CommFunc.WriteDWORD(data, self.AttentionItemIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AttentionCount:%d,
+ AttentionItemIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AttentionCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAttentionAuctionItemID=tagGCAttentionAuctionItemID()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemID.Head.Cmd,m_NAtagGCAttentionAuctionItemID.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemID
+
+
+#------------------------------------------------------
+# B5 06 拍卖行关注中的拍品信息 #tagGCAttentionAuctionItemInfo
+
+class tagGCAttentionAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCAttentionAuctionItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCAttentionAuctionItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCAttentionAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x06
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAttentionAuctionItemInfo=tagGCAttentionAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemInfo.Head.Cmd,m_NAtagGCAttentionAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 01 拍卖行拍卖中的物品信息 #tagGCAuctionItemInfo
+
+class tagGCAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCAuctionItemInfo(Structure):
+ Head = tagHead()
+ Job = 0 #(BYTE Job)//过滤职业,0为不限制
+ ItemTypeCount = 0 #(BYTE ItemTypeCount)
+ ItemTypeList = list() #(vector<DWORD> ItemTypeList)//指定的物品类型
+ ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制
+ SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数
+ SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID
+ FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询
+ QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查,3-定位查询
+ QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部
+ QueryRemainlCount = 0 #(WORD QueryRemainlCount)//查询条件对应查询方向剩余个数
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//返回拍品数量
+ AuctionItemList = list() #(vector<tagGCAuctionItem> AuctionItemList)//返回拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemTypeCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ItemTypeList.append(value)
+ self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SpecItemIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SpecItemIDList.append(value)
+ self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.QueryRemainlCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x01
+ self.Job = 0
+ self.ItemTypeCount = 0
+ self.ItemTypeList = list()
+ self.ClassLV = 0
+ self.SpecItemIDCount = 0
+ self.SpecItemIDList = list()
+ self.FromItemGUID = ""
+ self.QueryDir = 0
+ self.QueryCount = 0
+ self.QueryRemainlCount = 0
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.ItemTypeCount
+ length += 1
+ length += 1
+ length += 4 * self.SpecItemIDCount
+ length += 40
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
+ for i in range(self.ItemTypeCount):
+ data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
+ data = CommFunc.WriteBYTE(data, self.ClassLV)
+ data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
+ for i in range(self.SpecItemIDCount):
+ data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
+ data = CommFunc.WriteString(data, 40, self.FromItemGUID)
+ data = CommFunc.WriteBYTE(data, self.QueryDir)
+ data = CommFunc.WriteBYTE(data, self.QueryCount)
+ data = CommFunc.WriteWORD(data, self.QueryRemainlCount)
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Job:%d,
+ ItemTypeCount:%d,
+ ItemTypeList:%s,
+ ClassLV:%d,
+ SpecItemIDCount:%d,
+ SpecItemIDList:%s,
+ FromItemGUID:%s,
+ QueryDir:%d,
+ QueryCount:%d,
+ QueryRemainlCount:%d,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Job,
+ self.ItemTypeCount,
+ "...",
+ self.ClassLV,
+ self.SpecItemIDCount,
+ "...",
+ self.FromItemGUID,
+ self.QueryDir,
+ self.QueryCount,
+ self.QueryRemainlCount,
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAuctionItemInfo=tagGCAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAuctionItemInfo.Head.Cmd,m_NAtagGCAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 10 拍卖行玩家竞价中的物品信息 #tagGCBiddingItemInfo
+
+class tagGCBiddingItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderID = 0 #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderID = 0
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteDWORD(data, self.BidderID)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderID:%d,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderID,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCBiddingItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCBiddingItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCBiddingItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCBiddingItemInfo=tagGCBiddingItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBiddingItemInfo.Head.Cmd,m_NAtagGCBiddingItemInfo.Head.SubCmd))] = m_NAtagGCBiddingItemInfo
+
+
+#------------------------------------------------------
+# B5 09 拍卖行清除拍品 #tagGCClearAuctionItemInfo
+
+class tagGCClearAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s
+ '''\
+ %(
+ self.ItemGUID
+ )
+ return DumpString
+
+
+class tagGCClearAuctionItemInfo(Structure):
+ Head = tagHead()
+ ClearCount = 0 #(BYTE ClearCount)
+ ClearAuctionItemList = list() #(vector<tagGCClearAuctionItem> ClearAuctionItemList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x09
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ClearCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ClearCount):
+ temClearAuctionItemList = tagGCClearAuctionItem()
+ _pos = temClearAuctionItemList.ReadData(_lpData, _pos)
+ self.ClearAuctionItemList.append(temClearAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x09
+ self.ClearCount = 0
+ self.ClearAuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.ClearCount):
+ length += self.ClearAuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ClearCount)
+ for i in range(self.ClearCount):
+ data = CommFunc.WriteString(data, self.ClearAuctionItemList[i].GetLength(), self.ClearAuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ClearCount:%d,
+ ClearAuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ClearCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCClearAuctionItemInfo=tagGCClearAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAuctionItemInfo.Head.Cmd,m_NAtagGCClearAuctionItemInfo.Head.SubCmd))] = m_NAtagGCClearAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo
+
+class tagGCFamilyAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ FamilyPlayerIDLen = 0 #(WORD FamilyPlayerIDLen)
+ FamilyPlayerIDInfo = "" #(String FamilyPlayerIDInfo)//可获得收益的仙盟玩家ID信息
+ AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FamilyPlayerIDInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyPlayerIDLen)
+ self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ self.FamilyPlayerIDLen = 0
+ self.FamilyPlayerIDInfo = ""
+ self.AuctionType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+ length += 2
+ length += len(self.FamilyPlayerIDInfo)
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen)
+ data = CommFunc.WriteString(data, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo)
+ data = CommFunc.WriteBYTE(data, self.AuctionType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s,
+ FamilyPlayerIDLen:%d,
+ FamilyPlayerIDInfo:%s,
+ AuctionType:%d
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData,
+ self.FamilyPlayerIDLen,
+ self.FamilyPlayerIDInfo,
+ self.AuctionType
+ )
+ return DumpString
+
+
+class tagGCFamilyAuctionItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCFamilyAuctionItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x05
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCFamilyAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x05
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFamilyAuctionItemInfo=tagGCFamilyAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyAuctionItemInfo.Head.Cmd,m_NAtagGCFamilyAuctionItemInfo.Head.SubCmd))] = m_NAtagGCFamilyAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 02 拍卖行玩家拍卖中的物品信息 #tagGCPlayerAuctionItemInfo
+
+class tagGCPlayerAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCPlayerAuctionItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCPlayerAuctionItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x02
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCPlayerAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x02
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCPlayerAuctionItemInfo=tagGCPlayerAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionItemInfo.Head.Cmd,m_NAtagGCPlayerAuctionItemInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 03 拍卖行玩家拍卖记录 #tagGCPlayerAuctionRecordInfo
+
+class tagGCPlayerAuctionRecord(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ RecordType = 0 #(BYTE RecordType)//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
+ RecordResult = 0 #(BYTE RecordResult)//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
+ RecordTime = "" #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(DWORD BidderPrice)//成交价格
+ BidderName = "" #(char BidderName[33])//成交玩家名
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RecordResult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BidderName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.RecordType = 0
+ self.RecordResult = 0
+ self.RecordTime = ""
+ self.BidderPrice = 0
+ self.BidderName = ""
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 1
+ length += 1
+ length += 19
+ length += 4
+ length += 33
+ length += 4
+ length += 2
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteBYTE(data, self.RecordType)
+ data = CommFunc.WriteBYTE(data, self.RecordResult)
+ data = CommFunc.WriteString(data, 19, self.RecordTime)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 33, self.BidderName)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ RecordType:%d,
+ RecordResult:%d,
+ RecordTime:%s,
+ BidderPrice:%d,
+ BidderName:%s,
+ ItemID:%d,
+ ItemCount:%d,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.RecordType,
+ self.RecordResult,
+ self.RecordTime,
+ self.BidderPrice,
+ self.BidderName,
+ self.ItemID,
+ self.ItemCount,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCPlayerAuctionRecordInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ AuctionRecordList = list() #(vector<tagGCPlayerAuctionRecord> AuctionRecordList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x03
+ 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):
+ temAuctionRecordList = tagGCPlayerAuctionRecord()
+ _pos = temAuctionRecordList.ReadData(_lpData, _pos)
+ self.AuctionRecordList.append(temAuctionRecordList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x03
+ self.Count = 0
+ self.AuctionRecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.AuctionRecordList[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.AuctionRecordList[i].GetLength(), self.AuctionRecordList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ AuctionRecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCPlayerAuctionRecordInfo=tagGCPlayerAuctionRecordInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionRecordInfo.Head.Cmd,m_NAtagGCPlayerAuctionRecordInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionRecordInfo
+
+
+#------------------------------------------------------
+# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItemInfo
+
+class tagGCRefreshAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
+ AddTime = "" #(char AddTime[19])//上架时间
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.AuctionType = 0
+ self.AddTime = ""
+ self.BidderID = 0
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 1
+ length += 19
+ length += 4
+ length += 4
+ length += 19
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteBYTE(data, self.AuctionType)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteDWORD(data, self.BidderID)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ AuctionType:%d,
+ AddTime:%s,
+ BidderID:%d,
+ BidderPrice:%d,
+ BiddingTime:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.AuctionType,
+ self.AddTime,
+ self.BidderID,
+ self.BidderPrice,
+ self.BiddingTime
+ )
+ return DumpString
+
+
+class tagGCRefreshAuctionItemInfo(Structure):
+ Head = tagHead()
+ RefreshCount = 0 #(BYTE RefreshCount)
+ RefreshAuctionItemList = list() #(vector<tagGCRefreshAuctionItem> RefreshAuctionItemList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x08
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RefreshCount):
+ temRefreshAuctionItemList = tagGCRefreshAuctionItem()
+ _pos = temRefreshAuctionItemList.ReadData(_lpData, _pos)
+ self.RefreshAuctionItemList.append(temRefreshAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x08
+ self.RefreshCount = 0
+ self.RefreshAuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.RefreshCount):
+ length += self.RefreshAuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RefreshCount)
+ for i in range(self.RefreshCount):
+ data = CommFunc.WriteString(data, self.RefreshAuctionItemList[i].GetLength(), self.RefreshAuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RefreshCount:%d,
+ RefreshAuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RefreshCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCRefreshAuctionItemInfo=tagGCRefreshAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItemInfo.Head.Cmd,m_NAtagGCRefreshAuctionItemInfo.Head.SubCmd))] = m_NAtagGCRefreshAuctionItemInfo
#------------------------------------------------------
@@ -8138,8 +9741,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
@@ -8226,6 +9829,7 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
MaxHP = 0 #(DWORD MaxHP)// 默认满血
+ MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
data = None
def __init__(self):
@@ -8240,6 +9844,7 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -8249,6 +9854,7 @@
self.Job = 0
self.LV = 0
self.MaxHP = 0
+ self.MaxProDef = 0
return
def GetLength(self):
@@ -8258,6 +9864,7 @@
length += len(self.PlayerName)
length += 1
length += 2
+ length += 4
length += 4
return length
@@ -8270,6 +9877,7 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxProDef)
return data
def OutputString(self):
@@ -8279,7 +9887,8 @@
PlayerName:%s,
Job:%d,
LV:%d,
- MaxHP:%d
+ MaxHP:%d,
+ MaxProDef:%d
'''\
%(
self.PlayerID,
@@ -8287,7 +9896,8 @@
self.PlayerName,
self.Job,
self.LV,
- self.MaxHP
+ self.MaxHP,
+ self.MaxProDef
)
return DumpString
@@ -8297,6 +9907,7 @@
RoomID = 0 #(WORD RoomID)// 房间ID
NameLen = 0 #(BYTE NameLen)
PlayerName = "" #(String PlayerName)// 跨服名字
+ Number = 0 #(BYTE Number)// 位置编号;1-左,2-右
MatchPlayerCount = 0 #(BYTE MatchPlayerCount)
MatchPlayer = list() #(vector<tagGCCrossRealmPKMatchPlayer> MatchPlayer)// 匹配到的玩家
data = None
@@ -8313,6 +9924,7 @@
self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Number,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MatchPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.MatchPlayerCount):
temMatchPlayer = tagGCCrossRealmPKMatchPlayer()
@@ -8328,6 +9940,7 @@
self.RoomID = 0
self.NameLen = 0
self.PlayerName = ""
+ self.Number = 0
self.MatchPlayerCount = 0
self.MatchPlayer = list()
return
@@ -8338,6 +9951,7 @@
length += 2
length += 1
length += len(self.PlayerName)
+ length += 1
length += 1
for i in range(self.MatchPlayerCount):
length += self.MatchPlayer[i].GetLength()
@@ -8350,6 +9964,7 @@
data = CommFunc.WriteWORD(data, self.RoomID)
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Number)
data = CommFunc.WriteBYTE(data, self.MatchPlayerCount)
for i in range(self.MatchPlayerCount):
data = CommFunc.WriteString(data, self.MatchPlayer[i].GetLength(), self.MatchPlayer[i].GetBuffer())
@@ -8361,6 +9976,7 @@
RoomID:%d,
NameLen:%d,
PlayerName:%s,
+ Number:%d,
MatchPlayerCount:%d,
MatchPlayer:%s
'''\
@@ -8369,6 +9985,7 @@
self.RoomID,
self.NameLen,
self.PlayerName,
+ self.Number,
self.MatchPlayerCount,
"..."
)
@@ -8390,7 +10007,7 @@
RoundCount = 0 #(BYTE RoundCount)// PK回合数
RoundWinnerID = list() #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表
AddScore = 0 #(WORD AddScore)// 本场加分
- Score = 0 #(WORD Score)// 当前积分
+ Score = 0 #(DWORD Score)// 当前积分
DanLV = 0 #(BYTE DanLV)// 当前段位
CWinCnt = 0 #(WORD CWinCnt)// 当前连胜数
TagNameLen = 0 #(BYTE TagNameLen)
@@ -8414,7 +10031,7 @@
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.RoundWinnerID.append(value)
self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -8448,7 +10065,7 @@
length += 1
length += 4 * self.RoundCount
length += 2
- length += 2
+ length += 4
length += 1
length += 2
length += 1
@@ -8466,7 +10083,7 @@
for i in range(self.RoundCount):
data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i])
data = CommFunc.WriteWORD(data, self.AddScore)
- data = CommFunc.WriteWORD(data, self.Score)
+ data = CommFunc.WriteDWORD(data, self.Score)
data = CommFunc.WriteBYTE(data, self.DanLV)
data = CommFunc.WriteWORD(data, self.CWinCnt)
data = CommFunc.WriteBYTE(data, self.TagNameLen)
@@ -8712,64 +10329,92 @@
# C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
class tagGCCrossRealmPKSeasonState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ZoneID", c_ubyte), # 所属赛区ID
- ("SeasonID", c_ushort), # 当前赛季ID
- ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束
- ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中
- ]
+ Head = tagHead()
+ ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID
+ SeasonID = 0 #(WORD SeasonID)// 当前赛季ID
+ SeasonState = 0 #(BYTE SeasonState)// 赛季状态;0-未开启,1-开启中,2-已结束
+ MatchState = 0 #(BYTE MatchState)// 匹配状态;0-未开启;1-开启中
+ CrossZoneNameLen = 0 #(BYTE CrossZoneNameLen)
+ CrossZoneName = "" #(String CrossZoneName)// 跨服分区名
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xC0
- self.SubCmd = 0x06
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x06
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.SeasonState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MatchState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CrossZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CrossZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.CrossZoneNameLen)
+ return _pos
def Clear(self):
- self.Cmd = 0xC0
- self.SubCmd = 0x06
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x06
self.ZoneID = 0
self.SeasonID = 0
self.SeasonState = 0
self.MatchState = 0
+ self.CrossZoneNameLen = 0
+ self.CrossZoneName = ""
return
def GetLength(self):
- return sizeof(tagGCCrossRealmPKSeasonState)
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 1
+ length += len(self.CrossZoneName)
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteWORD(data, self.SeasonID)
+ data = CommFunc.WriteBYTE(data, self.SeasonState)
+ data = CommFunc.WriteBYTE(data, self.MatchState)
+ data = CommFunc.WriteBYTE(data, self.CrossZoneNameLen)
+ data = CommFunc.WriteString(data, self.CrossZoneNameLen, self.CrossZoneName)
+ return data
def OutputString(self):
- DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
ZoneID:%d,
SeasonID:%d,
SeasonState:%d,
- MatchState:%d
+ MatchState:%d,
+ CrossZoneNameLen:%d,
+ CrossZoneName:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.ZoneID,
self.SeasonID,
self.SeasonState,
- self.MatchState
+ self.MatchState,
+ self.CrossZoneNameLen,
+ self.CrossZoneName
)
return DumpString
m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Head.Cmd,m_NAtagGCCrossRealmPKSeasonState.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
#------------------------------------------------------
@@ -9049,6 +10694,714 @@
m_NAtagMCCoinToGoldReport=tagMCCoinToGoldReport()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCoinToGoldReport.Head.Cmd,m_NAtagMCCoinToGoldReport.Head.SubCmd))] = m_NAtagMCCoinToGoldReport
+
+
+#------------------------------------------------------
+# A1 12 玩家初始化 #tagMCDBPlayer
+
+class tagMCDBPlayer(Structure):
+ Head = tagHead()
+ AccID = "" #(char AccID[65])//帐号名, 该角色所在的帐号的用户名
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])//size = 14
+ AccState = 0 #(BYTE AccState)//0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除
+ GMLevel = 0 #(BYTE GMLevel)//GM等级, 0:不是GM >=1 : GM的等级
+ Sex = 0 #(BYTE Sex)//性别
+ Job = 0 #(BYTE Job)//职业, 0.新手 1.游侠 2.战士 3.弓箭手 4.术士 5.道士
+ ReincarnationLv = 0 #(WORD ReincarnationLv)// 转生等级
+ LV = 0 #(WORD LV)//等级
+ LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生
+ LV2 = 0 #(WORD LV2)//大师等级
+ ExpPoint = 0 #(DWORD ExpPoint)//扩充经验点数
+ TotalExp = 0 #(DWORD TotalExp)//总经验
+ Family = 0 #(DWORD Family)//家族
+ FamilyName = "" #(char FamilyName[33])//家族名称
+ TeamHornor = 0 #(int TeamHornor)//组队荣誉
+ FamilyHornor = 0 #(int FamilyHornor)//家族荣耀
+ FamilyActiveValue = 0 #(int FamilyActiveValue)//家族活跃度
+ LastWeekFamilyActiveValue = 0 #(int LastWeekFamilyActiveValue)//上周家族活跃度
+ CountryHornor = 0 #(int CountryHornor)//本周国家功勋值
+ CountryLastWeekHornor = 0 #(int CountryLastWeekHornor)//上周国家功勋值
+ Mate = 0 #(DWORD Mate)
+ Gold = 0 #(DWORD Gold)//金子
+ GoldPaper = 0 #(DWORD GoldPaper)//金票
+ Silver = 0 #(DWORD Silver)//银子
+ SilverPaper = 0 #(DWORD SilverPaper)//银票
+ FightPoint = 0 #(DWORD FightPoint)//战斗值
+ HappyPoint = 0 #(DWORD HappyPoint)//脱机挂时长(秒)
+ LineID = 0 #(BYTE LineID)//角色所在线路
+ MapID = 0 #(WORD MapID)//角色所在地图
+ PosX = 0 #(WORD PosX)//角色坐标
+ PosY = 0 #(WORD PosY)
+ RebornMapID = 0 #(WORD RebornMapID)//重生点地图ID
+ RebornPosX = 0 #(WORD RebornPosX)
+ RebornPosY = 0 #(WORD RebornPosY)
+ State = 0 #(BYTE State)//角色状态 0.正常在线1.脱机挂在线 2脱机挂死亡
+ HP = 0 #(DWORD HP)//当前HP
+ XP = 0 #(DWORD XP)//当前XP
+ HPRestoreSetting = 0 #(WORD HPRestoreSetting)//少于这个值%自动喝血
+ MPRestoreSetting = 0 #(WORD MPRestoreSetting)//少于这个值%自动喝魔
+ FreePoint = 0 #(DWORD FreePoint)//未分配点数
+ FreeSkillPoint = 0 #(DWORD FreeSkillPoint)//未分配的技能点
+ BaseSTR = 0 #(int BaseSTR)//裸体力量
+ BasePNE = 0 #(int BasePNE)//裸体真元
+ BasePHY = 0 #(int BasePHY)//裸体筋骨
+ BaseCON = 0 #(int BaseCON)//裸体体魄
+ STR = 0 #(int STR)//力量
+ PNE = 0 #(int PNE)//真元
+ PHY = 0 #(int PHY)//筋骨
+ CON = 0 #(int CON)//体魄
+ PKValue = 0 #(WORD PKValue)//衡量PK能力的一项属性,由攻防计算而得
+ BackpackLV = 0 #(BYTE BackpackLV)//背包等级
+ WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
+ TeamID = 0 #(DWORD TeamID)//队伍ID
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
+ AttackMode = 0 #(BYTE AttackMode)//攻击模式
+ LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
+ FBID = 0 #(BYTE FBID)//fb id
+ FamilyLV = 0 #(BYTE FamilyLV)//家族等级
+ FriendFavor = 0 #(DWORD FriendFavor)//好友人气值
+ Energy = 0 #(DWORD Energy)//精力值
+ EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//装备显示开关
+ LuckValue = 0 #(DWORD LuckValue)//幸运值
+ ExAttr1 = 0 #(DWORD ExAttr1)//扩展属性1,各项目专用
+ ExAttr2 = 0 #(DWORD ExAttr2)//扩展属性2,各项目专用
+ ExAttr3 = 0 #(DWORD ExAttr3)//扩展属性3,各项目专用
+ ExAttr4 = 0 #(DWORD ExAttr4)//扩展属性4,各项目专用
+ ExAttr5 = 0 #(DWORD ExAttr5)//扩展属性5,各项目专用
+ Faction = 0 #(BYTE Faction)//阵营
+ InfamyValue = 0 #(DWORD InfamyValue)//恶名值
+ OfficialRank = 0 #(BYTE OfficialRank)//官阶,官职等级
+ ChangeCoinPointTotal = 0 #(DWORD ChangeCoinPointTotal)//兑换的点数总计
+ VIPLv = 0 #(BYTE VIPLv)//VIP等级
+ VIPLvForPhone = 0 #(BYTE VIPLvForPhone)//移动VIP等级
+ ExAttr6 = 0 #(DWORD ExAttr6)//扩展属性6,各项目专用
+ ExAttr7 = 0 #(DWORD ExAttr7)//扩展属性7,各项目专用
+ ExAttr8 = 0 #(DWORD ExAttr8)//扩展属性8,各项目专用
+ ExAttr9 = 0 #(DWORD ExAttr9)//扩展属性9,各项目专用
+ ExAttr10 = 0 #(DWORD ExAttr10)//扩展属性10,各项目专用
+ ModelMark = 0 #(DWORD ModelMark)// 变形模型mark
+ ExAttr11 = 0 #(DWORD ExAttr11)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr12 = 0 #(DWORD ExAttr12)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr13 = 0 #(DWORD ExAttr13)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr14 = 0 #(DWORD ExAttr14)//预留的扩展属性字段,用来存放项目特定的属性
+ OperateInfo = 0 #(DWORD OperateInfo)//玩家附加运营商信息
+ Operate = "" #(char Operate[15])//所属运营商平台名
+ ServerID = 0 #(DWORD ServerID)//所属区服ID
+ ExAttr15 = 0 #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr16 = 0 #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr17 = 0 #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,65)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.AccState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GMLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Sex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TotalExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Family,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.TeamHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LastWeekFamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountryHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountryLastWeekHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Mate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Gold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GoldPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Silver,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SilverPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HappyPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornMapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornPosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornPosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.XP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FreePoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FreeSkillPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BaseSTR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BasePNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BasePHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BaseCON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.STR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PKValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BackpackLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WarehouseLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.UseGoldType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.UseSilverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AttackMode,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LastWeekOnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FBID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FriendFavor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LuckValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.InfamyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OfficialRank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ChangeCoinPointTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.VIPLv,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.VIPLvForPhone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExAttr6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr9,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr10,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr11,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr12,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr13,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr14,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Operate,_pos = CommFunc.ReadString(_lpData, _pos,15)
+ self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x12
+ self.AccID = ""
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.AccState = 0
+ self.GMLevel = 0
+ self.Sex = 0
+ self.Job = 0
+ self.ReincarnationLv = 0
+ self.LV = 0
+ self.LVEx = 0
+ self.LV2 = 0
+ self.ExpPoint = 0
+ self.TotalExp = 0
+ self.Family = 0
+ self.FamilyName = ""
+ self.TeamHornor = 0
+ self.FamilyHornor = 0
+ self.FamilyActiveValue = 0
+ self.LastWeekFamilyActiveValue = 0
+ self.CountryHornor = 0
+ self.CountryLastWeekHornor = 0
+ self.Mate = 0
+ self.Gold = 0
+ self.GoldPaper = 0
+ self.Silver = 0
+ self.SilverPaper = 0
+ self.FightPoint = 0
+ self.HappyPoint = 0
+ self.LineID = 0
+ self.MapID = 0
+ self.PosX = 0
+ self.PosY = 0
+ self.RebornMapID = 0
+ self.RebornPosX = 0
+ self.RebornPosY = 0
+ self.State = 0
+ self.HP = 0
+ self.XP = 0
+ self.HPRestoreSetting = 0
+ self.MPRestoreSetting = 0
+ self.FreePoint = 0
+ self.FreeSkillPoint = 0
+ self.BaseSTR = 0
+ self.BasePNE = 0
+ self.BasePHY = 0
+ self.BaseCON = 0
+ self.STR = 0
+ self.PNE = 0
+ self.PHY = 0
+ self.CON = 0
+ self.PKValue = 0
+ self.BackpackLV = 0
+ self.WarehouseLV = 0
+ self.TeamID = 0
+ self.UseGoldType = 0
+ self.UseSilverType = 0
+ self.AttackMode = 0
+ self.LastWeekOnlineTime = 0
+ self.FBID = 0
+ self.FamilyLV = 0
+ self.FriendFavor = 0
+ self.Energy = 0
+ self.EquipShowSwitch = 0
+ self.LuckValue = 0
+ self.ExAttr1 = 0
+ self.ExAttr2 = 0
+ self.ExAttr3 = 0
+ self.ExAttr4 = 0
+ self.ExAttr5 = 0
+ self.Faction = 0
+ self.InfamyValue = 0
+ self.OfficialRank = 0
+ self.ChangeCoinPointTotal = 0
+ self.VIPLv = 0
+ self.VIPLvForPhone = 0
+ self.ExAttr6 = 0
+ self.ExAttr7 = 0
+ self.ExAttr8 = 0
+ self.ExAttr9 = 0
+ self.ExAttr10 = 0
+ self.ModelMark = 0
+ self.ExAttr11 = 0
+ self.ExAttr12 = 0
+ self.ExAttr13 = 0
+ self.ExAttr14 = 0
+ self.OperateInfo = 0
+ self.Operate = ""
+ self.ServerID = 0
+ self.ExAttr15 = 0
+ self.ExAttr16 = 0
+ self.ExAttr17 = 0
+ self.ExAttr18 = 0
+ self.ExAttr19 = 0
+ self.ExAttr20 = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 65
+ length += 4
+ length += 33
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 33
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 1
+ length += 4
+ length += 4
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 15
+ length += 4
+ length += 4
+ length += 4
+ 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.WriteString(data, 65, self.AccID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.AccState)
+ data = CommFunc.WriteBYTE(data, self.GMLevel)
+ data = CommFunc.WriteBYTE(data, self.Sex)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.ReincarnationLv)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.LVEx)
+ data = CommFunc.WriteWORD(data, self.LV2)
+ data = CommFunc.WriteDWORD(data, self.ExpPoint)
+ data = CommFunc.WriteDWORD(data, self.TotalExp)
+ data = CommFunc.WriteDWORD(data, self.Family)
+ data = CommFunc.WriteString(data, 33, self.FamilyName)
+ data = CommFunc.WriteDWORD(data, self.TeamHornor)
+ data = CommFunc.WriteDWORD(data, self.FamilyHornor)
+ data = CommFunc.WriteDWORD(data, self.FamilyActiveValue)
+ data = CommFunc.WriteDWORD(data, self.LastWeekFamilyActiveValue)
+ data = CommFunc.WriteDWORD(data, self.CountryHornor)
+ data = CommFunc.WriteDWORD(data, self.CountryLastWeekHornor)
+ data = CommFunc.WriteDWORD(data, self.Mate)
+ data = CommFunc.WriteDWORD(data, self.Gold)
+ data = CommFunc.WriteDWORD(data, self.GoldPaper)
+ data = CommFunc.WriteDWORD(data, self.Silver)
+ data = CommFunc.WriteDWORD(data, self.SilverPaper)
+ data = CommFunc.WriteDWORD(data, self.FightPoint)
+ data = CommFunc.WriteDWORD(data, self.HappyPoint)
+ data = CommFunc.WriteBYTE(data, self.LineID)
+ data = CommFunc.WriteWORD(data, self.MapID)
+ data = CommFunc.WriteWORD(data, self.PosX)
+ data = CommFunc.WriteWORD(data, self.PosY)
+ data = CommFunc.WriteWORD(data, self.RebornMapID)
+ data = CommFunc.WriteWORD(data, self.RebornPosX)
+ data = CommFunc.WriteWORD(data, self.RebornPosY)
+ data = CommFunc.WriteBYTE(data, self.State)
+ data = CommFunc.WriteDWORD(data, self.HP)
+ data = CommFunc.WriteDWORD(data, self.XP)
+ data = CommFunc.WriteWORD(data, self.HPRestoreSetting)
+ data = CommFunc.WriteWORD(data, self.MPRestoreSetting)
+ data = CommFunc.WriteDWORD(data, self.FreePoint)
+ data = CommFunc.WriteDWORD(data, self.FreeSkillPoint)
+ data = CommFunc.WriteDWORD(data, self.BaseSTR)
+ data = CommFunc.WriteDWORD(data, self.BasePNE)
+ data = CommFunc.WriteDWORD(data, self.BasePHY)
+ data = CommFunc.WriteDWORD(data, self.BaseCON)
+ data = CommFunc.WriteDWORD(data, self.STR)
+ data = CommFunc.WriteDWORD(data, self.PNE)
+ data = CommFunc.WriteDWORD(data, self.PHY)
+ data = CommFunc.WriteDWORD(data, self.CON)
+ data = CommFunc.WriteWORD(data, self.PKValue)
+ data = CommFunc.WriteBYTE(data, self.BackpackLV)
+ data = CommFunc.WriteBYTE(data, self.WarehouseLV)
+ data = CommFunc.WriteDWORD(data, self.TeamID)
+ data = CommFunc.WriteBYTE(data, self.UseGoldType)
+ data = CommFunc.WriteBYTE(data, self.UseSilverType)
+ data = CommFunc.WriteBYTE(data, self.AttackMode)
+ data = CommFunc.WriteDWORD(data, self.LastWeekOnlineTime)
+ data = CommFunc.WriteBYTE(data, self.FBID)
+ data = CommFunc.WriteBYTE(data, self.FamilyLV)
+ data = CommFunc.WriteDWORD(data, self.FriendFavor)
+ data = CommFunc.WriteDWORD(data, self.Energy)
+ data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
+ data = CommFunc.WriteDWORD(data, self.LuckValue)
+ data = CommFunc.WriteDWORD(data, self.ExAttr1)
+ data = CommFunc.WriteDWORD(data, self.ExAttr2)
+ data = CommFunc.WriteDWORD(data, self.ExAttr3)
+ data = CommFunc.WriteDWORD(data, self.ExAttr4)
+ data = CommFunc.WriteDWORD(data, self.ExAttr5)
+ data = CommFunc.WriteBYTE(data, self.Faction)
+ data = CommFunc.WriteDWORD(data, self.InfamyValue)
+ data = CommFunc.WriteBYTE(data, self.OfficialRank)
+ data = CommFunc.WriteDWORD(data, self.ChangeCoinPointTotal)
+ data = CommFunc.WriteBYTE(data, self.VIPLv)
+ data = CommFunc.WriteBYTE(data, self.VIPLvForPhone)
+ data = CommFunc.WriteDWORD(data, self.ExAttr6)
+ data = CommFunc.WriteDWORD(data, self.ExAttr7)
+ data = CommFunc.WriteDWORD(data, self.ExAttr8)
+ data = CommFunc.WriteDWORD(data, self.ExAttr9)
+ data = CommFunc.WriteDWORD(data, self.ExAttr10)
+ data = CommFunc.WriteDWORD(data, self.ModelMark)
+ data = CommFunc.WriteDWORD(data, self.ExAttr11)
+ data = CommFunc.WriteDWORD(data, self.ExAttr12)
+ data = CommFunc.WriteDWORD(data, self.ExAttr13)
+ data = CommFunc.WriteDWORD(data, self.ExAttr14)
+ data = CommFunc.WriteDWORD(data, self.OperateInfo)
+ data = CommFunc.WriteString(data, 15, self.Operate)
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ data = CommFunc.WriteDWORD(data, self.ExAttr15)
+ data = CommFunc.WriteDWORD(data, self.ExAttr16)
+ data = CommFunc.WriteDWORD(data, self.ExAttr17)
+ data = CommFunc.WriteDWORD(data, self.ExAttr18)
+ data = CommFunc.WriteDWORD(data, self.ExAttr19)
+ data = CommFunc.WriteDWORD(data, self.ExAttr20)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AccID:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ AccState:%d,
+ GMLevel:%d,
+ Sex:%d,
+ Job:%d,
+ ReincarnationLv:%d,
+ LV:%d,
+ LVEx:%d,
+ LV2:%d,
+ ExpPoint:%d,
+ TotalExp:%d,
+ Family:%d,
+ FamilyName:%s,
+ TeamHornor:%d,
+ FamilyHornor:%d,
+ FamilyActiveValue:%d,
+ LastWeekFamilyActiveValue:%d,
+ CountryHornor:%d,
+ CountryLastWeekHornor:%d,
+ Mate:%d,
+ Gold:%d,
+ GoldPaper:%d,
+ Silver:%d,
+ SilverPaper:%d,
+ FightPoint:%d,
+ HappyPoint:%d,
+ LineID:%d,
+ MapID:%d,
+ PosX:%d,
+ PosY:%d,
+ RebornMapID:%d,
+ RebornPosX:%d,
+ RebornPosY:%d,
+ State:%d,
+ HP:%d,
+ XP:%d,
+ HPRestoreSetting:%d,
+ MPRestoreSetting:%d,
+ FreePoint:%d,
+ FreeSkillPoint:%d,
+ BaseSTR:%d,
+ BasePNE:%d,
+ BasePHY:%d,
+ BaseCON:%d,
+ STR:%d,
+ PNE:%d,
+ PHY:%d,
+ CON:%d,
+ PKValue:%d,
+ BackpackLV:%d,
+ WarehouseLV:%d,
+ TeamID:%d,
+ UseGoldType:%d,
+ UseSilverType:%d,
+ AttackMode:%d,
+ LastWeekOnlineTime:%d,
+ FBID:%d,
+ FamilyLV:%d,
+ FriendFavor:%d,
+ Energy:%d,
+ EquipShowSwitch:%d,
+ LuckValue:%d,
+ ExAttr1:%d,
+ ExAttr2:%d,
+ ExAttr3:%d,
+ ExAttr4:%d,
+ ExAttr5:%d,
+ Faction:%d,
+ InfamyValue:%d,
+ OfficialRank:%d,
+ ChangeCoinPointTotal:%d,
+ VIPLv:%d,
+ VIPLvForPhone:%d,
+ ExAttr6:%d,
+ ExAttr7:%d,
+ ExAttr8:%d,
+ ExAttr9:%d,
+ ExAttr10:%d,
+ ModelMark:%d,
+ ExAttr11:%d,
+ ExAttr12:%d,
+ ExAttr13:%d,
+ ExAttr14:%d,
+ OperateInfo:%d,
+ Operate:%s,
+ ServerID:%d,
+ ExAttr15:%d,
+ ExAttr16:%d,
+ ExAttr17:%d,
+ ExAttr18:%d,
+ ExAttr19:%d,
+ ExAttr20:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AccID,
+ self.PlayerID,
+ self.PlayerName,
+ self.AccState,
+ self.GMLevel,
+ self.Sex,
+ self.Job,
+ self.ReincarnationLv,
+ self.LV,
+ self.LVEx,
+ self.LV2,
+ self.ExpPoint,
+ self.TotalExp,
+ self.Family,
+ self.FamilyName,
+ self.TeamHornor,
+ self.FamilyHornor,
+ self.FamilyActiveValue,
+ self.LastWeekFamilyActiveValue,
+ self.CountryHornor,
+ self.CountryLastWeekHornor,
+ self.Mate,
+ self.Gold,
+ self.GoldPaper,
+ self.Silver,
+ self.SilverPaper,
+ self.FightPoint,
+ self.HappyPoint,
+ self.LineID,
+ self.MapID,
+ self.PosX,
+ self.PosY,
+ self.RebornMapID,
+ self.RebornPosX,
+ self.RebornPosY,
+ self.State,
+ self.HP,
+ self.XP,
+ self.HPRestoreSetting,
+ self.MPRestoreSetting,
+ self.FreePoint,
+ self.FreeSkillPoint,
+ self.BaseSTR,
+ self.BasePNE,
+ self.BasePHY,
+ self.BaseCON,
+ self.STR,
+ self.PNE,
+ self.PHY,
+ self.CON,
+ self.PKValue,
+ self.BackpackLV,
+ self.WarehouseLV,
+ self.TeamID,
+ self.UseGoldType,
+ self.UseSilverType,
+ self.AttackMode,
+ self.LastWeekOnlineTime,
+ self.FBID,
+ self.FamilyLV,
+ self.FriendFavor,
+ self.Energy,
+ self.EquipShowSwitch,
+ self.LuckValue,
+ self.ExAttr1,
+ self.ExAttr2,
+ self.ExAttr3,
+ self.ExAttr4,
+ self.ExAttr5,
+ self.Faction,
+ self.InfamyValue,
+ self.OfficialRank,
+ self.ChangeCoinPointTotal,
+ self.VIPLv,
+ self.VIPLvForPhone,
+ self.ExAttr6,
+ self.ExAttr7,
+ self.ExAttr8,
+ self.ExAttr9,
+ self.ExAttr10,
+ self.ModelMark,
+ self.ExAttr11,
+ self.ExAttr12,
+ self.ExAttr13,
+ self.ExAttr14,
+ self.OperateInfo,
+ self.Operate,
+ self.ServerID,
+ self.ExAttr15,
+ self.ExAttr16,
+ self.ExAttr17,
+ self.ExAttr18,
+ self.ExAttr19,
+ self.ExAttr20
+ )
+ return DumpString
+
+
+m_NAtagMCDBPlayer=tagMCDBPlayer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDBPlayer.Head.Cmd,m_NAtagMCDBPlayer.Head.SubCmd))] = m_NAtagMCDBPlayer
#------------------------------------------------------
@@ -10220,6 +12573,7 @@
_fields_ = [
("ItemID", c_int), #果实物品ID
("EatCnt", c_ushort), #已使用个数
+ ("AddItemCnt", c_int), #增幅丹使用个数
]
def __init__(self):
@@ -10234,6 +12588,7 @@
def Clear(self):
self.ItemID = 0
self.EatCnt = 0
+ self.AddItemCnt = 0
return
def GetLength(self):
@@ -10245,11 +12600,13 @@
def OutputString(self):
DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
ItemID:%d,
- EatCnt:%d
+ EatCnt:%d,
+ AddItemCnt:%d
'''\
%(
self.ItemID,
- self.EatCnt
+ self.EatCnt,
+ self.AddItemCnt
)
return DumpString
@@ -10850,6 +13207,8 @@
_fields_ = [
("ActionID", c_int), # ID
("DayFinishCnt", c_ushort), # 今日已完成次数
+ ("DayBuyTimes", c_ubyte), # 今日购买次数
+ ("DayItemTimes", c_ubyte), # 今日物品增加次数
("WeekFinishCnt", c_int), # 本周已完成次数
]
@@ -10865,6 +13224,8 @@
def Clear(self):
self.ActionID = 0
self.DayFinishCnt = 0
+ self.DayBuyTimes = 0
+ self.DayItemTimes = 0
self.WeekFinishCnt = 0
return
@@ -10878,11 +13239,15 @@
DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
ActionID:%d,
DayFinishCnt:%d,
+ DayBuyTimes:%d,
+ DayItemTimes:%d,
WeekFinishCnt:%d
'''\
%(
self.ActionID,
self.DayFinishCnt,
+ self.DayBuyTimes,
+ self.DayItemTimes,
self.WeekFinishCnt
)
return DumpString
@@ -11291,70 +13656,57 @@
#------------------------------------------------------
-# A3 09 通知玩家部位套装等级 #tagMCEquipPartSuiteLVInfo
+# A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
-class tagMCEquipPartSuiteLV(Structure):
- EquipIndex = 0 #(BYTE EquipIndex)
- Len = 0 #(WORD Len)//长度
- SuiteLVInfo = "" #(String SuiteLVInfo)//{套装类型:等级}
- data = None
+class tagMCEquipPartStar(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EquipPackIndex", c_ushort),
+ ("Star", c_ubyte),
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.SuiteLVInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.EquipIndex = 0
- self.Len = 0
- self.SuiteLVInfo = ""
+ self.EquipPackIndex = 0
+ self.Star = 0
return
def GetLength(self):
- length = 0
- length += 1
- length += 2
- length += len(self.SuiteLVInfo)
-
- return length
+ return sizeof(tagMCEquipPartStar)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.EquipIndex)
- data = CommFunc.WriteWORD(data, self.Len)
- data = CommFunc.WriteString(data, self.Len, self.SuiteLVInfo)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- EquipIndex:%d,
- Len:%d,
- SuiteLVInfo:%s
+ DumpString = '''// A3 B1 装备部位星数信息 //tagMCEquipPartStarInfo:
+ EquipPackIndex:%d,
+ Star:%d
'''\
%(
- self.EquipIndex,
- self.Len,
- self.SuiteLVInfo
+ self.EquipPackIndex,
+ self.Star
)
return DumpString
-class tagMCEquipPartSuiteLVInfo(Structure):
+class tagMCEquipPartStarInfo(Structure):
Head = tagHead()
Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCEquipPartSuiteLV> InfoList)// 信息列表
+ InfoList = list() #(vector<tagMCEquipPartStar> InfoList)// 信息列表
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x09
+ self.Head.SubCmd = 0xB1
return
def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -11362,7 +13714,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCEquipPartSuiteLV()
+ temInfoList = tagMCEquipPartStar()
_pos = temInfoList.ReadData(_lpData, _pos)
self.InfoList.append(temInfoList)
return _pos
@@ -11371,7 +13723,7 @@
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x09
+ self.Head.SubCmd = 0xB1
self.Count = 0
self.InfoList = list()
return
@@ -11407,8 +13759,8 @@
return DumpString
-m_NAtagMCEquipPartSuiteLVInfo=tagMCEquipPartSuiteLVInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteLVInfo.Head.Cmd,m_NAtagMCEquipPartSuiteLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteLVInfo
+m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
#------------------------------------------------------
@@ -11454,7 +13806,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,依次递增
@@ -11581,6 +13933,254 @@
m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
+
+
+#------------------------------------------------------
+# A3 07 缥缈奇遇信息 #tagMCFairyAdventuresInfo
+
+class tagMCFairyAdventuresData(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EventID", c_ubyte),
+ ("Gear", c_ubyte), #第几档
+ ("Condition", c_int), #条件
+ ]
+
+ 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.EventID = 0
+ self.Gear = 0
+ self.Condition = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFairyAdventuresData)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 07 缥缈奇遇信息 //tagMCFairyAdventuresInfo:
+ EventID:%d,
+ Gear:%d,
+ Condition:%d
+ '''\
+ %(
+ self.EventID,
+ self.Gear,
+ self.Condition
+ )
+ return DumpString
+
+
+class tagMCFairyAdventuresInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)
+ InfoList = list() #(vector<tagMCFairyAdventuresData> InfoList)// 信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x07
+ 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):
+ temInfoList = tagMCFairyAdventuresData()
+ _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 = 0x07
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFairyAdventuresInfo=tagMCFairyAdventuresInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyAdventuresInfo.Head.Cmd,m_NAtagMCFairyAdventuresInfo.Head.SubCmd))] = m_NAtagMCFairyAdventuresInfo
+
+
+#------------------------------------------------------
+# A3 06 缥缈仙域信息 #tagMCFairyDomainInfo
+
+class tagMCFairyDomainEvent(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EventID", c_ushort), #事件ID
+ ("EventState", c_ubyte), #事件状态 1-可拜访 2-拜访中 3-已拜访
+ ]
+
+ 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.EventID = 0
+ self.EventState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFairyDomainEvent)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 06 缥缈仙域信息 //tagMCFairyDomainInfo:
+ EventID:%d,
+ EventState:%d
+ '''\
+ %(
+ self.EventID,
+ self.EventState
+ )
+ return DumpString
+
+
+class tagMCFairyDomainInfo(Structure):
+ Head = tagHead()
+ IsAll = 0 #(BYTE IsAll)//是否全部
+ State = 0 #(BYTE State)//0-未寻访 1-寻访中 2-任务标记可寻访
+ VisitCnt = 0 #(DWORD VisitCnt)//寻访次数
+ Energy = 0 #(WORD Energy)//体力
+ Count = 0 #(BYTE Count)// 信息个数
+ InfoList = list() #(vector<tagMCFairyDomainEvent> InfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.VisitCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagMCFairyDomainEvent()
+ _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 = 0x06
+ self.IsAll = 0
+ self.State = 0
+ self.VisitCnt = 0
+ self.Energy = 0
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4
+ length += 2
+ length += 1
+ 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.WriteBYTE(data, self.IsAll)
+ data = CommFunc.WriteBYTE(data, self.State)
+ data = CommFunc.WriteDWORD(data, self.VisitCnt)
+ data = CommFunc.WriteWORD(data, self.Energy)
+ data = CommFunc.WriteBYTE(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,
+ IsAll:%d,
+ State:%d,
+ VisitCnt:%d,
+ Energy:%d,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IsAll,
+ self.State,
+ self.VisitCnt,
+ self.Energy,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFairyDomainInfo=tagMCFairyDomainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyDomainInfo.Head.Cmd,m_NAtagMCFairyDomainInfo.Head.SubCmd))] = m_NAtagMCFairyDomainInfo
#------------------------------------------------------
@@ -12577,73 +15177,6 @@
#------------------------------------------------------
-# A3 12 通知玩家法宝信息 #tagMCMagicWeaponData
-
-class tagMCMagicWeaponData(Structure):
- Head = tagHead()
- Num = 0 #(BYTE Num)//个数
- MagicWeaponID = list() #(vector<DWORD> MagicWeaponID)// 已激活的法宝ID列表
- 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):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.MagicWeaponID.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x12
- self.Num = 0
- self.MagicWeaponID = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4 * self.Num
-
- 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.WriteDWORD(data, self.MagicWeaponID[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Num:%d,
- MagicWeaponID:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Num,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCMagicWeaponData=tagMCMagicWeaponData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData
-
-
-#------------------------------------------------------
# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
class tagMCMagicWeaponInfo(Structure):
@@ -12652,7 +15185,6 @@
("MWID", c_int),
("LV", c_ubyte),
("Exp", c_int),
- ("State", c_ubyte), #是否点击法宝认主
("FBPassLV", c_ubyte), #副本关卡
("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝)
]
@@ -12670,7 +15202,6 @@
self.MWID = 0
self.LV = 0
self.Exp = 0
- self.State = 0
self.FBPassLV = 0
self.IsWear = 0
return
@@ -12686,7 +15217,6 @@
MWID:%d,
LV:%d,
Exp:%d,
- State:%d,
FBPassLV:%d,
IsWear:%d
'''\
@@ -12694,7 +15224,6 @@
self.MWID,
self.LV,
self.Exp,
- self.State,
self.FBPassLV,
self.IsWear
)
@@ -12765,114 +15294,6 @@
m_NAtagMCMagicWeaponLVInfo=tagMCMagicWeaponLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponLVInfo.Head.Cmd,m_NAtagMCMagicWeaponLVInfo.Head.SubCmd))] = m_NAtagMCMagicWeaponLVInfo
-
-
-#------------------------------------------------------
-# A3 BE 通知客户端法宝精炼等级 #tagMCMagicWeaponMsg
-
-class tagMCMagicWeaponLV(Structure):
- _pack_ = 1
- _fields_ = [
- ("MWID", c_int), # 法宝ID
- ("MWLV", 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.MWID = 0
- self.MWLV = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMagicWeaponLV)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 BE 通知客户端法宝精炼等级 //tagMCMagicWeaponMsg:
- MWID:%d,
- MWLV:%d
- '''\
- %(
- self.MWID,
- self.MWLV
- )
- return DumpString
-
-
-class tagMCMagicWeaponMsg(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)// 法宝个数
- MWInfo = list() #(vector<tagMCMagicWeaponLV> MWInfo)//法宝信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xBE
- 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):
- temMWInfo = tagMCMagicWeaponLV()
- _pos = temMWInfo.ReadData(_lpData, _pos)
- self.MWInfo.append(temMWInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xBE
- self.Count = 0
- self.MWInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.MWInfo[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.MWInfo[i].GetLength(), self.MWInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- MWInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCMagicWeaponMsg=tagMCMagicWeaponMsg()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponMsg.Head.Cmd,m_NAtagMCMagicWeaponMsg.Head.SubCmd))] = m_NAtagMCMagicWeaponMsg
#------------------------------------------------------
@@ -12996,15 +15417,16 @@
#------------------------------------------------------
-# A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
+# A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
-class tagMCEquipPartStarLV(Structure):
+class tagMCEquipPartPlusLV(Structure):
_pack_ = 1
_fields_ = [
("PackType", c_ubyte),
("EquipIndex", c_ubyte),
("EquipPartStarLV", c_ushort),
("Proficiency", c_int),
+ ("EvolveLV", c_ubyte),
]
def __init__(self):
@@ -13021,34 +15443,37 @@
self.EquipIndex = 0
self.EquipPartStarLV = 0
self.Proficiency = 0
+ self.EvolveLV = 0
return
def GetLength(self):
- return sizeof(tagMCEquipPartStarLV)
+ return sizeof(tagMCEquipPartPlusLV)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
+ DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
PackType:%d,
EquipIndex:%d,
EquipPartStarLV:%d,
- Proficiency:%d
+ Proficiency:%d,
+ EvolveLV:%d
'''\
%(
self.PackType,
self.EquipIndex,
self.EquipPartStarLV,
- self.Proficiency
+ self.Proficiency,
+ self.EvolveLV
)
return DumpString
-class tagMCEquipPartStarLVInfo(Structure):
+class tagMCEquipPartPlusInfo(Structure):
Head = tagHead()
Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
+ InfoList = list() #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
data = None
def __init__(self):
@@ -13062,7 +15487,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCEquipPartStarLV()
+ temInfoList = tagMCEquipPartPlusLV()
_pos = temInfoList.ReadData(_lpData, _pos)
self.InfoList.append(temInfoList)
return _pos
@@ -13107,8 +15532,8 @@
return DumpString
-m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
+m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
#------------------------------------------------------
@@ -13291,16 +15716,13 @@
#------------------------------------------------------
-# A3 53 法宝特权数据 #tagMCMWPrivilegeDataInfo
+# A3 25 NPC已攻击次数信息 #tagMCNPCAttackCountInfo
-class tagMCMWPrivilegeData(Structure):
+class tagMCNPCAttackCount(Structure):
_pack_ = 1
_fields_ = [
- ("PriID", c_int), # 特权ID
- ("State", c_ubyte), #激活状态
- ("CurValue", c_int), #当前总进度
- ("GotValue", c_int), #已领取进度
- ("ItemAwardState", c_ubyte), #物品奖励是否已领取
+ ("NPCID", c_int),
+ ("AttackCount", c_ubyte), #已攻击次数
]
def __init__(self):
@@ -13313,47 +15735,38 @@
return _pos + self.GetLength()
def Clear(self):
- self.PriID = 0
- self.State = 0
- self.CurValue = 0
- self.GotValue = 0
- self.ItemAwardState = 0
+ self.NPCID = 0
+ self.AttackCount = 0
return
def GetLength(self):
- return sizeof(tagMCMWPrivilegeData)
+ return sizeof(tagMCNPCAttackCount)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
- PriID:%d,
- State:%d,
- CurValue:%d,
- GotValue:%d,
- ItemAwardState:%d
+ DumpString = '''// A3 25 NPC已攻击次数信息 //tagMCNPCAttackCountInfo:
+ NPCID:%d,
+ AttackCount:%d
'''\
%(
- self.PriID,
- self.State,
- self.CurValue,
- self.GotValue,
- self.ItemAwardState
+ self.NPCID,
+ self.AttackCount
)
return DumpString
-class tagMCMWPrivilegeDataInfo(Structure):
+class tagMCNPCAttackCountInfo(Structure):
Head = tagHead()
- Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCMWPrivilegeData> InfoList)// 信息列表
+ Count = 0 #(BYTE Count)
+ NPCAttackCountList = list() #(vector<tagMCNPCAttackCount> NPCAttackCountList)
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x53
+ self.Head.SubCmd = 0x25
return
def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -13361,18 +15774,18 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCMWPrivilegeData()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
+ temNPCAttackCountList = tagMCNPCAttackCount()
+ _pos = temNPCAttackCountList.ReadData(_lpData, _pos)
+ self.NPCAttackCountList.append(temNPCAttackCountList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x53
+ self.Head.SubCmd = 0x25
self.Count = 0
- self.InfoList = list()
+ self.NPCAttackCountList = list()
return
def GetLength(self):
@@ -13380,7 +15793,7 @@
length += self.Head.GetLength()
length += 1
for i in range(self.Count):
- length += self.InfoList[i].GetLength()
+ length += self.NPCAttackCountList[i].GetLength()
return length
@@ -13389,14 +15802,14 @@
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.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ data = CommFunc.WriteString(data, self.NPCAttackCountList[i].GetLength(), self.NPCAttackCountList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
Count:%d,
- InfoList:%s
+ NPCAttackCountList:%s
'''\
%(
self.Head.OutputString(),
@@ -13406,8 +15819,8 @@
return DumpString
-m_NAtagMCMWPrivilegeDataInfo=tagMCMWPrivilegeDataInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMWPrivilegeDataInfo.Head.Cmd,m_NAtagMCMWPrivilegeDataInfo.Head.SubCmd))] = m_NAtagMCMWPrivilegeDataInfo
+m_NAtagMCNPCAttackCountInfo=tagMCNPCAttackCountInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCAttackCountInfo.Head.Cmd,m_NAtagMCNPCAttackCountInfo.Head.SubCmd))] = m_NAtagMCNPCAttackCountInfo
#------------------------------------------------------
@@ -13600,7 +16013,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -14043,20 +16456,15 @@
#------------------------------------------------------
# A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg
-class tagMCPlayerStoveMsg(Structure):
+class tagMCPlayerStoveInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("StoveLV", c_ubyte), # 炼丹炉等级
- ("StoveExp", c_int), # 炼丹炉经验
- ("ItemID", c_int), # 合成物品id
+ ("AlchemyID", c_int), # 丹 ID
+ ("StartTime", c_int), # 开始炼的时间
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xBF
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -14065,39 +16473,120 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0xBF
- self.StoveLV = 0
- self.StoveExp = 0
- self.ItemID = 0
+ self.AlchemyID = 0
+ self.StartTime = 0
return
def GetLength(self):
- return sizeof(tagMCPlayerStoveMsg)
+ return sizeof(tagMCPlayerStoveInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
- Cmd:%s,
- SubCmd:%s,
- StoveLV:%d,
- StoveExp:%d,
- ItemID:%d
+ AlchemyID:%d,
+ StartTime:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.AlchemyID,
+ self.StartTime
+ )
+ return DumpString
+
+
+class tagMCPlayerStoveMsg(Structure):
+ Head = tagHead()
+ StoveLV = 0 #(BYTE StoveLV)// 炼丹炉等级
+ StoveExp = 0 #(DWORD StoveExp)// 炼丹炉经验
+ ItemID = 0 #(DWORD ItemID)// 合成物品id
+ ItemCnt = 0 #(BYTE ItemCnt)// 丹药数量
+ StoveCnt = 0 #(WORD StoveCnt)// 丹药数量
+ InfoList = list() #(vector<tagMCPlayerStoveInfo> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xBF
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.StoveCnt):
+ temInfoList = tagMCPlayerStoveInfo()
+ _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 = 0xBF
+ self.StoveLV = 0
+ self.StoveExp = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.StoveCnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ length += 2
+ for i in range(self.StoveCnt):
+ 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.StoveLV)
+ data = CommFunc.WriteDWORD(data, self.StoveExp)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteBYTE(data, self.ItemCnt)
+ data = CommFunc.WriteWORD(data, self.StoveCnt)
+ for i in range(self.StoveCnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StoveLV:%d,
+ StoveExp:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ StoveCnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
self.StoveLV,
self.StoveExp,
- self.ItemID
+ self.ItemID,
+ self.ItemCnt,
+ self.StoveCnt,
+ "..."
)
return DumpString
m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Head.Cmd,m_NAtagMCPlayerStoveMsg.Head.SubCmd))] = m_NAtagMCPlayerStoveMsg
#------------------------------------------------------
@@ -14154,6 +16643,74 @@
m_NAtagMCPrayElixirResult=tagMCPrayElixirResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult
+
+
+#------------------------------------------------------
+# A3 27 境界修为池信息 #tagMCRealmExpInfo
+
+class tagMCRealmExpInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BeginTime", c_int), #开始计时时间
+ ("BuffTime", c_int), #buff剩余时间
+ ("BuffAddRate", c_int), #buff加成万分率
+ ("CurExp", c_int), #当前总经验
+ ("CurExpPoint", c_int), #当前总经验点
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x27
+ self.BeginTime = 0
+ self.BuffTime = 0
+ self.BuffAddRate = 0
+ self.CurExp = 0
+ self.CurExpPoint = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCRealmExpInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 27 境界修为池信息 //tagMCRealmExpInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ BeginTime:%d,
+ BuffTime:%d,
+ BuffAddRate:%d,
+ CurExp:%d,
+ CurExpPoint:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BeginTime,
+ self.BuffTime,
+ self.BuffAddRate,
+ self.CurExp,
+ self.CurExpPoint
+ )
+ return DumpString
+
+
+m_NAtagMCRealmExpInfo=tagMCRealmExpInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRealmExpInfo.Cmd,m_NAtagMCRealmExpInfo.SubCmd))] = m_NAtagMCRealmExpInfo
#------------------------------------------------------
@@ -14404,6 +16961,178 @@
m_NAtagMCSingleGoldGift=tagMCSingleGoldGift()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSingleGoldGift.Cmd,m_NAtagMCSingleGoldGift.SubCmd))] = m_NAtagMCSingleGoldGift
+
+
+#------------------------------------------------------
+# A3 09 技能五行专精信息 #tagMCSkillElementInfo
+
+class tagMCSkillElementActiveData(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SkillID", c_int), # 技能ID
+ ("ActiveLV", 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.SkillID = 0
+ self.ActiveLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSkillElementActiveData)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo:
+ SkillID:%d,
+ ActiveLV:%d
+ '''\
+ %(
+ self.SkillID,
+ self.ActiveLV
+ )
+ return DumpString
+
+
+class tagMCSkillElementData(Structure):
+ MainSkillID = 0 #(DWORD MainSkillID)// 主技能ID
+ ElementSkillID = 0 #(DWORD ElementSkillID)// 选择的专精技能ID
+ SkillCnt = 0 #(BYTE SkillCnt)// 数量
+ ActiveSkill = list() #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkillCnt):
+ temActiveSkill = tagMCSkillElementActiveData()
+ _pos = temActiveSkill.ReadData(_lpData, _pos)
+ self.ActiveSkill.append(temActiveSkill)
+ return _pos
+
+ def Clear(self):
+ self.MainSkillID = 0
+ self.ElementSkillID = 0
+ self.SkillCnt = 0
+ self.ActiveSkill = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.SkillCnt):
+ length += self.ActiveSkill[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.MainSkillID)
+ data = CommFunc.WriteDWORD(data, self.ElementSkillID)
+ data = CommFunc.WriteBYTE(data, self.SkillCnt)
+ for i in range(self.SkillCnt):
+ data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ MainSkillID:%d,
+ ElementSkillID:%d,
+ SkillCnt:%d,
+ ActiveSkill:%s
+ '''\
+ %(
+ self.MainSkillID,
+ self.ElementSkillID,
+ self.SkillCnt,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCSkillElementInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)// 数量
+ InfoList = list() #(vector<tagMCSkillElementData> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x09
+ 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):
+ temInfoList = tagMCSkillElementData()
+ _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 = 0x09
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCSkillElementInfo=tagMCSkillElementInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkillElementInfo.Head.Cmd,m_NAtagMCSkillElementInfo.Head.SubCmd))] = m_NAtagMCSkillElementInfo
#------------------------------------------------------
@@ -15011,18 +17740,14 @@
#------------------------------------------------------
-# A3 11 通知玩家境界渡劫是否开启 #tagMCSyncRealmFBIsOpen
+# A3 11 通知玩家境界信息 #tagMCSyncRealmInfo
-class tagMCSyncRealmFBIsOpen(Structure):
+class tagMCSyncRealmInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("IsOpen", c_ubyte), #是否开启
- ("SitAllTime", c_ushort), #打坐总时间秒
- ("SitRemainTime", c_int), #开始打坐前剩余时间秒
- ("SitStartTime", c_int), #开始打坐时间
- ("LastEnterTime", c_int), #上次进入渡劫副本时间
+ ("IsPass", c_ubyte), #是否通关副本
]
def __init__(self):
@@ -15039,43 +17764,31 @@
def Clear(self):
self.Cmd = 0xA3
self.SubCmd = 0x11
- self.IsOpen = 0
- self.SitAllTime = 0
- self.SitRemainTime = 0
- self.SitStartTime = 0
- self.LastEnterTime = 0
+ self.IsPass = 0
return
def GetLength(self):
- return sizeof(tagMCSyncRealmFBIsOpen)
+ return sizeof(tagMCSyncRealmInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 11 通知玩家境界渡劫是否开启 //tagMCSyncRealmFBIsOpen:
+ DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
Cmd:%s,
SubCmd:%s,
- IsOpen:%d,
- SitAllTime:%d,
- SitRemainTime:%d,
- SitStartTime:%d,
- LastEnterTime:%d
+ IsPass:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.IsOpen,
- self.SitAllTime,
- self.SitRemainTime,
- self.SitStartTime,
- self.LastEnterTime
+ self.IsPass
)
return DumpString
-m_NAtagMCSyncRealmFBIsOpen=tagMCSyncRealmFBIsOpen()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmFBIsOpen.Cmd,m_NAtagMCSyncRealmFBIsOpen.SubCmd))] = m_NAtagMCSyncRealmFBIsOpen
+m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Cmd,m_NAtagMCSyncRealmInfo.SubCmd))] = m_NAtagMCSyncRealmInfo
#------------------------------------------------------
@@ -15981,74 +18694,6 @@
#------------------------------------------------------
-#A5 34 天梯竞技场状态#tagMCHighLadderState
-
-class tagMCHighLadderState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Count", c_ubyte), #已挑战次数
- ("MaxCount", c_ubyte), #最大次数
- ("CDTime", c_int), #累计冷却时间
- ("IsRelCD", c_ubyte), #是否正在真实冷却状态
- ("Currency", c_int), #积分
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x34
- 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 = 0x34
- self.Count = 0
- self.MaxCount = 0
- self.CDTime = 0
- self.IsRelCD = 0
- self.Currency = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCHighLadderState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 34 天梯竞技场状态//tagMCHighLadderState:
- Cmd:%s,
- SubCmd:%s,
- Count:%d,
- MaxCount:%d,
- CDTime:%d,
- IsRelCD:%d,
- Currency:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Count,
- self.MaxCount,
- self.CDTime,
- self.IsRelCD,
- self.Currency
- )
- return DumpString
-
-
-m_NAtagMCHighLadderState=tagMCHighLadderState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHighLadderState.Cmd,m_NAtagMCHighLadderState.SubCmd))] = m_NAtagMCHighLadderState
-
-
-#------------------------------------------------------
#A5 01 查看已申请加入的家族信息 #tagMCNotifyRequestJoinFamilyInfo
class tagRequestJoinFamily(Structure):
@@ -16783,6 +19428,125 @@
m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState
+
+
+#------------------------------------------------------
+# A7 18 采集奖励物品通知 #tagMCCollectAwardItemInfo
+
+class tagMCCollectAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Count", c_ubyte),
+ ("IsAuctionItem", 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.Count = 0
+ self.IsAuctionItem = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCollectAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 18 采集奖励物品通知 //tagMCCollectAwardItemInfo:
+ ItemID:%d,
+ Count:%d,
+ IsAuctionItem:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count,
+ self.IsAuctionItem
+ )
+ return DumpString
+
+
+class tagMCCollectAwardItemInfo(Structure):
+ Head = tagHead()
+ CollectNPCID = 0 #(DWORD CollectNPCID)//采集的NPCID
+ Count = 0 #(BYTE Count)
+ AwardItemList = list() #(vector<tagMCCollectAwardItem> AwardItemList)//奖励物品信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CollectNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCollectAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x18
+ self.CollectNPCID = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.CollectNPCID)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ CollectNPCID:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.CollectNPCID,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
#------------------------------------------------------
@@ -17826,6 +20590,84 @@
#------------------------------------------------------
+# A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
+
+class tagSCPlayerEquipCacheResult(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)//玩家ID
+ EquipClassLV = 0 #(BYTE EquipClassLV)
+ ItemDataSize = 0 #(WORD ItemDataSize)
+ ItemData = "" #(String ItemData)//物品记录
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x19
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemDataSize,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x19
+ self.PlayerID = 0
+ self.EquipClassLV = 0
+ self.ItemDataSize = 0
+ self.ItemData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 2
+ length += len(self.ItemData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.EquipClassLV)
+ data = CommFunc.WriteWORD(data, self.ItemDataSize)
+ data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ EquipClassLV:%d,
+ ItemDataSize:%d,
+ ItemData:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.EquipClassLV,
+ self.ItemDataSize,
+ self.ItemData
+ )
+ return DumpString
+
+
+m_NAtagSCPlayerEquipCacheResult=tagSCPlayerEquipCacheResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCPlayerEquipCacheResult.Head.Cmd,m_NAtagSCPlayerEquipCacheResult.Head.SubCmd))] = m_NAtagSCPlayerEquipCacheResult
+
+
+#------------------------------------------------------
# A7 07 通知玩家自定义聊天 #tagMCPyTalk
class tagMCPyTalk(Structure):
@@ -18054,7 +20896,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -18499,7 +21341,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
@@ -18605,6 +21447,117 @@
m_NAtagMCShoppingResult=tagMCShoppingResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShoppingResult.Cmd,m_NAtagMCShoppingResult.SubCmd))] = m_NAtagMCShoppingResult
+
+
+#------------------------------------------------------
+# A8 16 神秘商店商品信息 #tagMCMysticalShopInfo
+
+class tagMCMysticalShopGoods(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GoodsID", c_int), # 商品ID
+ ]
+
+ 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.GoodsID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMysticalShopGoods)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo:
+ GoodsID:%d
+ '''\
+ %(
+ self.GoodsID
+ )
+ return DumpString
+
+
+class tagMCMysticalShopInfo(Structure):
+ Head = tagHead()
+ RefreshCnt = 0 #(WORD RefreshCnt)// 刷新次数
+ Count = 0 #(BYTE Count)// 商品数
+ GoodsList = list() #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temGoodsList = tagMCMysticalShopGoods()
+ _pos = temGoodsList.ReadData(_lpData, _pos)
+ self.GoodsList.append(temGoodsList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x16
+ self.RefreshCnt = 0
+ self.Count = 0
+ self.GoodsList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ for i in range(self.Count):
+ length += self.GoodsList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RefreshCnt)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RefreshCnt:%d,
+ Count:%d,
+ GoodsList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RefreshCnt,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo
#------------------------------------------------------
@@ -18808,126 +21761,6 @@
#------------------------------------------------------
-# A8 04 通知商店限购物品已购买次数信息 # tagMCShopItemBuyCntInfoList
-
-class tagMCShopItemBuyCntInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("ShopID", c_int),
- ("ItemShopIndex", c_ushort),
- ("ItemID", c_int),
- ("BuyCnt", c_int), # 个人已购买数
- ("ServerBuyCnt", c_int), # 全服已购买数
- ]
-
- 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.ShopID = 0
- self.ItemShopIndex = 0
- self.ItemID = 0
- self.BuyCnt = 0
- self.ServerBuyCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCShopItemBuyCntInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 04 通知商店限购物品已购买次数信息 // tagMCShopItemBuyCntInfoList:
- ShopID:%d,
- ItemShopIndex:%d,
- ItemID:%d,
- BuyCnt:%d,
- ServerBuyCnt:%d
- '''\
- %(
- self.ShopID,
- self.ItemShopIndex,
- self.ItemID,
- self.BuyCnt,
- self.ServerBuyCnt
- )
- return DumpString
-
-
-class tagMCShopItemBuyCntInfoList(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//通知个数
- BuyCntList = list() #(vector<tagMCShopItemBuyCntInfo> BuyCntList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x04
- 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):
- temBuyCntList = tagMCShopItemBuyCntInfo()
- _pos = temBuyCntList.ReadData(_lpData, _pos)
- self.BuyCntList.append(temBuyCntList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x04
- self.Count = 0
- self.BuyCntList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.BuyCntList[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.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- BuyCntList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCShopItemBuyCntInfoList=tagMCShopItemBuyCntInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemBuyCntInfoList.Head.Cmd,m_NAtagMCShopItemBuyCntInfoList.Head.SubCmd))] = m_NAtagMCShopItemBuyCntInfoList
-
-
-#------------------------------------------------------
# A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
class tagMCShopItemDayBuyCnt(Structure):
@@ -19040,239 +21873,6 @@
#------------------------------------------------------
-# A8 03 通知自定义商店物品信息 #tagMCShopItemInfoList
-
-class tagMCShopItemInfo(Structure):
- ShopID = 0 #(DWORD ShopID)
- ItemShopIndex = 0 #(WORD ItemShopIndex)
- DataSize = 0 #(DWORD DataSize)
- ItemList = "" #(String ItemList)//物品列表[[物品ID,数量,是否绑定,是否定制]]
- PriceType = 0 #(BYTE PriceType)
- Price = 0 #(DWORD Price)
- OriginalPrice = 0 #(DWORD OriginalPrice)// 原价
- PlayerLVLimit = 0 #(WORD PlayerLVLimit)// 购买等级限制
- FamilyLVLimit = 0 #(BYTE FamilyLVLimit)// 购买战盟等级限制
- MaxBuyCnt = 0 #(DWORD MaxBuyCnt)// 个人限购数
- ServerMaxBuyCnt = 0 #(DWORD ServerMaxBuyCnt)// 全服限购数
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.ShopID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemShopIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemList,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
- self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Price,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.OriginalPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerLVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.FamilyLVLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ServerMaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.ShopID = 0
- self.ItemShopIndex = 0
- self.DataSize = 0
- self.ItemList = ""
- self.PriceType = 0
- self.Price = 0
- self.OriginalPrice = 0
- self.PlayerLVLimit = 0
- self.FamilyLVLimit = 0
- self.MaxBuyCnt = 0
- self.ServerMaxBuyCnt = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 2
- length += 4
- length += len(self.ItemList)
- length += 1
- length += 4
- length += 4
- length += 2
- length += 1
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.ShopID)
- data = CommFunc.WriteWORD(data, self.ItemShopIndex)
- data = CommFunc.WriteDWORD(data, self.DataSize)
- data = CommFunc.WriteString(data, self.DataSize, self.ItemList)
- data = CommFunc.WriteBYTE(data, self.PriceType)
- data = CommFunc.WriteDWORD(data, self.Price)
- data = CommFunc.WriteDWORD(data, self.OriginalPrice)
- data = CommFunc.WriteWORD(data, self.PlayerLVLimit)
- data = CommFunc.WriteBYTE(data, self.FamilyLVLimit)
- data = CommFunc.WriteDWORD(data, self.MaxBuyCnt)
- data = CommFunc.WriteDWORD(data, self.ServerMaxBuyCnt)
- return data
-
- def OutputString(self):
- DumpString = '''
- ShopID:%d,
- ItemShopIndex:%d,
- DataSize:%d,
- ItemList:%s,
- PriceType:%d,
- Price:%d,
- OriginalPrice:%d,
- PlayerLVLimit:%d,
- FamilyLVLimit:%d,
- MaxBuyCnt:%d,
- ServerMaxBuyCnt:%d
- '''\
- %(
- self.ShopID,
- self.ItemShopIndex,
- self.DataSize,
- self.ItemList,
- self.PriceType,
- self.Price,
- self.OriginalPrice,
- self.PlayerLVLimit,
- self.FamilyLVLimit,
- self.MaxBuyCnt,
- self.ServerMaxBuyCnt
- )
- return DumpString
-
-
-class tagMCShopItemInfoList(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//通知个数
- ShopItemList = list() #(vector<tagMCShopItemInfo> ShopItemList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x03
- 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):
- temShopItemList = tagMCShopItemInfo()
- _pos = temShopItemList.ReadData(_lpData, _pos)
- self.ShopItemList.append(temShopItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x03
- self.Count = 0
- self.ShopItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.ShopItemList[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.ShopItemList[i].GetLength(), self.ShopItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- ShopItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCShopItemInfoList=tagMCShopItemInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemInfoList.Head.Cmd,m_NAtagMCShopItemInfoList.Head.SubCmd))] = m_NAtagMCShopItemInfoList
-
-
-#------------------------------------------------------
-# A8 05 通知神秘商店刷新次数 #tagMCShopRefreshCnt
-
-class tagMCShopRefreshCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", c_int), #商店ID
- ("RefreshCnt", c_ushort), #已手动刷新次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA8
- self.SubCmd = 0x05
- 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 = 0x05
- self.ShopID = 0
- self.RefreshCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCShopRefreshCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 05 通知神秘商店刷新次数 //tagMCShopRefreshCnt:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d,
- RefreshCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID,
- self.RefreshCnt
- )
- return DumpString
-
-
-m_NAtagMCShopRefreshCnt=tagMCShopRefreshCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopRefreshCnt.Cmd,m_NAtagMCShopRefreshCnt.SubCmd))] = m_NAtagMCShopRefreshCnt
-
-
-#------------------------------------------------------
# A8 13 虚拟掉落物品 #tagMCVirtualItemDrop
class tagMCVirtualItemDrop(Structure):
@@ -19355,6 +21955,545 @@
m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
+
+
+#------------------------------------------------------
+# 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):
+ TemplateID = 0 #(DWORD TemplateID)// 模板ID
+ ActionType = 0 #(WORD ActionType)// 活动类别
+ TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
+ SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
+ Count = 0 #(WORD Count)// 物品配置长度
+ ItemInfo = "" #(String ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.ActionType = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.Count = 0
+ self.ItemInfo = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ItemInfo)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TemplateID)
+ data = CommFunc.WriteWORD(data, self.ActionType)
+ data = CommFunc.WriteDWORD(data, self.TotalTimes)
+ data = CommFunc.WriteDWORD(data, self.SingleTimes)
+ data = CommFunc.WriteWORD(data, self.Count)
+ data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ ActionType:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ Count:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.ActionType,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.Count,
+ self.ItemInfo
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardDayInfo(Structure):
+ ActCnt = 0 #(BYTE ActCnt)// 数量
+ TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
+ WorldLV = 0 #(WORD WorldLV)// 世界等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.TemplateList.append(value)
+ self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ActCnt = 0
+ self.TemplateList = list()
+ self.WorldLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.ActCnt
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ActCnt)
+ for i in range(self.ActCnt):
+ data = CommFunc.WriteWORD(data, self.TemplateList[i])
+ data = CommFunc.WriteWORD(data, self.WorldLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ActCnt:%d,
+ TemplateList:%s,
+ WorldLV:%d
+ '''\
+ %(
+ self.ActCnt,
+ "...",
+ self.WorldLV
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCnt = 0 #(BYTE DayCnt)// 天数
+ DayInfoList = list() #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
+ TCount = 0 #(BYTE TCount)// 模板数
+ ActionInfo = list() #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0C
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCnt):
+ temDayInfoList = tagMCActLoginAwardDayInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TCount):
+ temActionInfo = tagMCActLoginAwardAction()
+ _pos = temActionInfo.ReadData(_lpData, _pos)
+ self.ActionInfo.append(temActionInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0C
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.DayCnt = 0
+ self.DayInfoList = list()
+ self.TCount = 0
+ self.ActionInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.DayCnt):
+ length += self.DayInfoList[i].GetLength()
+ length += 1
+ for i in range(self.TCount):
+ length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCnt)
+ for i in range(self.DayCnt):
+ data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TCount)
+ for i in range(self.TCount):
+ data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ DayCnt:%d,
+ DayInfoList:%s,
+ TCount:%d,
+ ActionInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.DayCnt,
+ "...",
+ self.TCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
+
+
+#------------------------------------------------------
+# AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
+
+class tagMCActLoginAwardTaskInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TemplateID", c_ushort), # 模板ID
+ ("CurTimes", c_ushort), #已完成次数
+ ("GotTimes", 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.TemplateID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActLoginAwardTaskInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
+ TemplateID:%d,
+ CurTimes:%d,
+ GotTimes:%d
+ '''\
+ %(
+ self.TemplateID,
+ self.CurTimes,
+ self.GotTimes
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardDayPlayerInfo(Structure):
+ DayIndex = 0 #(DWORD DayIndex)//第X天
+ ACount = 0 #(DWORD ACount)//任务条目数
+ TaskList = list() #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.ACount):
+ temTaskList = tagMCActLoginAwardTaskInfo()
+ _pos = temTaskList.ReadData(_lpData, _pos)
+ self.TaskList.append(temTaskList)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.ACount = 0
+ self.TaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ for i in range(self.ACount):
+ length += self.TaskList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.DayIndex)
+ data = CommFunc.WriteDWORD(data, self.ACount)
+ for i in range(self.ACount):
+ data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayIndex:%d,
+ ACount:%d,
+ TaskList:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.ACount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ DayInfoList = list() #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0D
+ 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):
+ temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0D
+ self.Count = 0
+ self.DayInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DayInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
#------------------------------------------------------
@@ -20181,240 +23320,6 @@
#------------------------------------------------------
-# AA 03 升阶功能特惠奖励记录 #tagMCClassUPDayAwardRecordList
-
-class tagMCClassUPDayAwardRecord(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DayType", c_ubyte), # 奖励日类型
- ("Record", c_int), # 奖励记录
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x03
- 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 = 0x03
- self.DayType = 0
- self.Record = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCClassUPDayAwardRecord)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 03 升阶功能特惠奖励记录 //tagMCClassUPDayAwardRecordList:
- Cmd:%s,
- SubCmd:%s,
- DayType:%d,
- Record:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DayType,
- self.Record
- )
- return DumpString
-
-
-class tagMCClassUPDayAwardRecordList(Structure):
- Head = tagHead()
- RecordCount = 0 #(BYTE RecordCount)//记录个数
- RecordInfoList = list() #(vector<tagMCClassUPDayAwardRecord> RecordInfoList)//记录列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RecordCount):
- temRecordInfoList = tagMCClassUPDayAwardRecord()
- _pos = temRecordInfoList.ReadData(_lpData, _pos)
- self.RecordInfoList.append(temRecordInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x03
- self.RecordCount = 0
- self.RecordInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.RecordCount):
- length += self.RecordInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.RecordCount)
- for i in range(self.RecordCount):
- data = CommFunc.WriteString(data, self.RecordInfoList[i].GetLength(), self.RecordInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- RecordCount:%d,
- RecordInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.RecordCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCClassUPDayAwardRecordList=tagMCClassUPDayAwardRecordList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClassUPDayAwardRecordList.Head.Cmd,m_NAtagMCClassUPDayAwardRecordList.Head.SubCmd))] = m_NAtagMCClassUPDayAwardRecordList
-
-
-#------------------------------------------------------
-# AA 06 消费奖励信息 #tagMCCostProfitInfo
-
-class tagMCCostProfitInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("TotalCost", c_int), # 总消费
- ("AwardState", c_int), # 奖励领取状态
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x06
- self.ActionID = 0
- self.TotalCost = 0
- self.AwardState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCostProfitInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 06 消费奖励信息 //tagMCCostProfitInfo:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- TotalCost:%d,
- AwardState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.TotalCost,
- self.AwardState
- )
- return DumpString
-
-
-m_NAtagMCCostProfitInfo=tagMCCostProfitInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostProfitInfo.Cmd,m_NAtagMCCostProfitInfo.SubCmd))] = m_NAtagMCCostProfitInfo
-
-
-#------------------------------------------------------
-# AA 07 消费排行特惠信息 #tagMCCostRankTeHuiInfo
-
-class tagMCCostRankTeHuiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("TotalCost", c_int), # 总累计消费钻石
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x07
- self.ActionID = 0
- self.TotalCost = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCostRankTeHuiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 07 消费排行特惠信息 //tagMCCostRankTeHuiInfo:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- TotalCost:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.TotalCost
- )
- return DumpString
-
-
-m_NAtagMCCostRankTeHuiInfo=tagMCCostRankTeHuiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRankTeHuiInfo.Cmd,m_NAtagMCCostRankTeHuiInfo.SubCmd))] = m_NAtagMCCostRankTeHuiInfo
-
-
-#------------------------------------------------------
# AA 09 消费返利活动信息 #tagMCCostRebateInfo
class tagMCCostRebateAwardItem(Structure):
@@ -20722,6 +23627,518 @@
m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
+
+
+#------------------------------------------------------
+# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
+
+class tagMCFeastWeekPartyItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NeedPoint", c_ushort), # 领奖需要积分
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("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.NeedPoint = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastWeekPartyItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
+ NeedPoint:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.NeedPoint,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyAction(Structure):
+ TemplateID = 0 #(DWORD TemplateID)// 模板ID
+ ActionType = 0 #(WORD ActionType)// 活动类别
+ TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
+ SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
+ Point = 0 #(DWORD Point)// 单次领奖积分
+ Count = 0 #(BYTE Count)// 物品数
+ ItemInfo = list() #(vector<tagMCFeastWeekPartyItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temItemInfo = tagMCFeastWeekPartyItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.ActionType = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.Point = 0
+ self.Count = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TemplateID)
+ data = CommFunc.WriteWORD(data, self.ActionType)
+ data = CommFunc.WriteDWORD(data, self.TotalTimes)
+ data = CommFunc.WriteDWORD(data, self.SingleTimes)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ ActionType:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ Point:%d,
+ Count:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.ActionType,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.Point,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyDayInfo(Structure):
+ ActCnt = 0 #(BYTE ActCnt)// 数量
+ TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
+ PCount = 0 #(BYTE PCount)// 物品数
+ PItemInfo = list() #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.TemplateList.append(value)
+ self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PCount):
+ temPItemInfo = tagMCFeastWeekPartyItem()
+ _pos = temPItemInfo.ReadData(_lpData, _pos)
+ self.PItemInfo.append(temPItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.ActCnt = 0
+ self.TemplateList = list()
+ self.PCount = 0
+ self.PItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.ActCnt
+ length += 1
+ for i in range(self.PCount):
+ length += self.PItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ActCnt)
+ for i in range(self.ActCnt):
+ data = CommFunc.WriteWORD(data, self.TemplateList[i])
+ data = CommFunc.WriteBYTE(data, self.PCount)
+ for i in range(self.PCount):
+ data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ActCnt:%d,
+ TemplateList:%s,
+ PCount:%d,
+ PItemInfo:%s
+ '''\
+ %(
+ self.ActCnt,
+ "...",
+ self.PCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCnt = 0 #(BYTE DayCnt)// 天数
+ DayInfoList = list() #(vector<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
+ TCount = 0 #(BYTE TCount)// 模板数
+ ActionInfo = list() #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x20
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCnt):
+ temDayInfoList = tagMCFeastWeekPartyDayInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TCount):
+ temActionInfo = tagMCFeastWeekPartyAction()
+ _pos = temActionInfo.ReadData(_lpData, _pos)
+ self.ActionInfo.append(temActionInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x20
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.DayCnt = 0
+ self.DayInfoList = list()
+ self.TCount = 0
+ self.ActionInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.DayCnt):
+ length += self.DayInfoList[i].GetLength()
+ length += 1
+ for i in range(self.TCount):
+ length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCnt)
+ for i in range(self.DayCnt):
+ data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TCount)
+ for i in range(self.TCount):
+ data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ DayCnt:%d,
+ DayInfoList:%s,
+ TCount:%d,
+ ActionInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.DayCnt,
+ "...",
+ self.TCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
+
+
+#------------------------------------------------------
+# AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
+
+class tagMCFeastWeekPartyTaskInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TemplateID", c_ushort), # 模板ID
+ ("CurTimes", c_int), #已完成次数
+ ("GotTimes", c_int), #已领取次数
+ ]
+
+ 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.TemplateID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastWeekPartyTaskInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
+ TemplateID:%d,
+ CurTimes:%d,
+ GotTimes:%d
+ '''\
+ %(
+ self.TemplateID,
+ self.CurTimes,
+ self.GotTimes
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyDayPlayerInfo(Structure):
+ DayIndex = 0 #(DWORD DayIndex)//第X天
+ Point = 0 #(DWORD Point)//积分
+ AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
+ ACount = 0 #(DWORD ACount)//任务条目数
+ TaskList = list() #(vector<tagMCFeastWeekPartyTaskInfo> TaskList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.ACount):
+ temTaskList = tagMCFeastWeekPartyTaskInfo()
+ _pos = temTaskList.ReadData(_lpData, _pos)
+ self.TaskList.append(temTaskList)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.Point = 0
+ self.AwardRecord = 0
+ self.ACount = 0
+ self.TaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ for i in range(self.ACount):
+ length += self.TaskList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.DayIndex)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ data = CommFunc.WriteDWORD(data, self.ACount)
+ for i in range(self.ACount):
+ data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayIndex:%d,
+ Point:%d,
+ AwardRecord:%d,
+ ACount:%d,
+ TaskList:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.Point,
+ self.AwardRecord,
+ self.ACount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ DayInfoList = list() #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x21
+ 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):
+ temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x21
+ self.Count = 0
+ self.DayInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DayInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
#------------------------------------------------------
@@ -21712,21 +25129,18 @@
#------------------------------------------------------
-# AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
+# AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
-class tagMCRechargeRankTeHuiInfo(Structure):
+class tagMCLuckyTreasureItem(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("TotalGold", c_int), # 总累计充值元宝
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("IsBind", c_ubyte), # 是否绑定
]
def __init__(self):
self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x05
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -21735,129 +25149,277 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xAA
- self.SubCmd = 0x05
- self.ActionID = 0
- self.TotalGold = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
return
def GetLength(self):
- return sizeof(tagMCRechargeRankTeHuiInfo)
+ return sizeof(tagMCLuckyTreasureItem)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AA 05 充值排行特惠信息 //tagMCRechargeRankTeHuiInfo:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- TotalGold:%d
+ DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo:
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.TotalGold
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
)
return DumpString
-m_NAtagMCRechargeRankTeHuiInfo=tagMCRechargeRankTeHuiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRankTeHuiInfo.Cmd,m_NAtagMCRechargeRankTeHuiInfo.SubCmd))] = m_NAtagMCRechargeRankTeHuiInfo
-
-
-#------------------------------------------------------
-# AA 04 充值特惠信息 #tagMCRechargeTeHuiInfoList
-
-class tagMCRechargeTeHuiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GotCnt", c_ubyte), # 已领取次数
- ("CanGetCnt", c_ubyte), # 当前可领取次数
- ("CurTotalGold", c_int), # 当前规则累计充值元宝-仅针对累充规则
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x04
- 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 = 0x04
- self.GotCnt = 0
- self.CanGetCnt = 0
- self.CurTotalGold = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCRechargeTeHuiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 04 充值特惠信息 //tagMCRechargeTeHuiInfoList:
- Cmd:%s,
- SubCmd:%s,
- GotCnt:%d,
- CanGetCnt:%d,
- CurTotalGold:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GotCnt,
- self.CanGetCnt,
- self.CurTotalGold
- )
- return DumpString
-
-
-class tagMCRechargeTeHuiInfoList(Structure):
+class tagMCLuckyTreasureInfo(Structure):
Head = tagHead()
- ActionID = 0 #(DWORD ActionID)// 活动ID
- TotalGold = 0 #(DWORD TotalGold)// 总累计充值元宝
- InfoCnt = 0 #(BYTE InfoCnt)// 信息个数
- InfoList = list() #(vector<tagMCRechargeTeHuiInfo> InfoList)// 信息列表
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ LuckyPoint = 0 #(WORD LuckyPoint)// 总幸运值
+ Count = 0 #(WORD Count)// 物品数
+ ItemList = list() #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x04
+ self.Head.SubCmd = 0x1F
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.ActionID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TotalGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.InfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.InfoCnt):
- temInfoList = tagMCRechargeTeHuiInfo()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temItemList = tagMCLuckyTreasureItem()
+ _pos = temItemList.ReadData(_lpData, _pos)
+ self.ItemList.append(temItemList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x04
- self.ActionID = 0
- self.TotalGold = 0
- self.InfoCnt = 0
- self.InfoList = list()
+ self.Head.SubCmd = 0x1F
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.LuckyPoint = 0
+ self.Count = 0
+ self.ItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ for i in range(self.Count):
+ length += self.ItemList[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.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteWORD(data, self.LuckyPoint)
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ LimitLV:%d,
+ LuckyPoint:%d,
+ Count:%d,
+ ItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.LimitLV,
+ self.LuckyPoint,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo
+
+
+#------------------------------------------------------
+# AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
+
+class tagMCLuckyTreasureResultInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LuckyPoint", c_ushort), # 当前幸运点
+ ("HasFree", c_ubyte), # 是否免费过
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), #物品数量
+ ("IsBind", c_ubyte), # 是否绑定
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x1E
+ 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 = 0x1E
+ self.LuckyPoint = 0
+ self.HasFree = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLuckyTreasureResultInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ LuckyPoint:%d,
+ HasFree:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LuckyPoint,
+ self.HasFree,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
+ )
+ return DumpString
+
+
+m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo
+
+
+#------------------------------------------------------
+# AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo
+
+class tagMCNewAllPeoplePartyCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ActID", c_int), #活动ID
+ ("CurTimes", 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.ActID = 0
+ self.CurTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNewAllPeoplePartyCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 23 新仙界盛典全民来嗨玩家信息 //tagMCNewAllPeoplePartyInfo:
+ ActID:%d,
+ CurTimes:%d
+ '''\
+ %(
+ self.ActID,
+ self.CurTimes
+ )
+ return DumpString
+
+
+class tagMCNewAllPeoplePartyInfo(Structure):
+ Head = tagHead()
+ CurPoint = 0 #(DWORD CurPoint)//当前总点数
+ AwardRecord = 0 #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
+ Count = 0 #(BYTE Count)
+ BuyCountList = list() #(vector<tagMCNewAllPeoplePartyCount> BuyCountList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x23
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temBuyCountList = tagMCNewAllPeoplePartyCount()
+ _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 = 0x23
+ self.CurPoint = 0
+ self.AwardRecord = 0
+ self.Count = 0
+ self.BuyCountList = list()
return
def GetLength(self):
@@ -21866,41 +25428,93 @@
length += 4
length += 4
length += 1
- for i in range(self.InfoCnt):
- length += self.InfoList[i].GetLength()
+ 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.WriteDWORD(data, self.ActionID)
- data = CommFunc.WriteDWORD(data, self.TotalGold)
- data = CommFunc.WriteBYTE(data, self.InfoCnt)
- for i in range(self.InfoCnt):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.CurPoint)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ 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,
- ActionID:%d,
- TotalGold:%d,
- InfoCnt:%d,
- InfoList:%s
+ CurPoint:%d,
+ AwardRecord:%d,
+ Count:%d,
+ BuyCountList:%s
'''\
%(
self.Head.OutputString(),
- self.ActionID,
- self.TotalGold,
- self.InfoCnt,
+ self.CurPoint,
+ self.AwardRecord,
+ self.Count,
"..."
)
return DumpString
-m_NAtagMCRechargeTeHuiInfoList=tagMCRechargeTeHuiInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeTeHuiInfoList.Head.Cmd,m_NAtagMCRechargeTeHuiInfoList.Head.SubCmd))] = m_NAtagMCRechargeTeHuiInfoList
+m_NAtagMCNewAllPeoplePartyInfo=tagMCNewAllPeoplePartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewAllPeoplePartyInfo.Head.Cmd,m_NAtagMCNewAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCNewAllPeoplePartyInfo
+
+
+#------------------------------------------------------
+# AA 22 新仙界盛典充值大礼 #tagMCNewXJSDRecharge
+
+class tagMCNewXJSDRecharge(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("State", c_ubyte), #0-不可领 1-可领 2-已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x22
+ 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 = 0x22
+ self.State = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNewXJSDRecharge)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 22 新仙界盛典充值大礼 //tagMCNewXJSDRecharge:
+ Cmd:%s,
+ SubCmd:%s,
+ State:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.State
+ )
+ return DumpString
+
+
+m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
#------------------------------------------------------
@@ -22418,6 +26032,518 @@
#------------------------------------------------------
+# AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
+
+class tagMCWeekPartyItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NeedPoint", c_ushort), # 领奖需要积分
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("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.NeedPoint = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCWeekPartyItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0A 周狂欢活动信息 //tagMCWeekPartyInfo:
+ NeedPoint:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.NeedPoint,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCWeekPartyAction(Structure):
+ TemplateID = 0 #(DWORD TemplateID)// 模板ID
+ ActionType = 0 #(WORD ActionType)// 活动类别
+ TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
+ SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
+ Point = 0 #(DWORD Point)// 单次领奖积分
+ Count = 0 #(BYTE Count)// 物品数
+ ItemInfo = list() #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temItemInfo = tagMCWeekPartyItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.ActionType = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.Point = 0
+ self.Count = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TemplateID)
+ data = CommFunc.WriteWORD(data, self.ActionType)
+ data = CommFunc.WriteDWORD(data, self.TotalTimes)
+ data = CommFunc.WriteDWORD(data, self.SingleTimes)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ ActionType:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ Point:%d,
+ Count:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.ActionType,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.Point,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyDayInfo(Structure):
+ ActCnt = 0 #(BYTE ActCnt)// 数量
+ TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
+ PCount = 0 #(BYTE PCount)// 物品数
+ PItemInfo = list() #(vector<tagMCWeekPartyItem> PItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.TemplateList.append(value)
+ self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PCount):
+ temPItemInfo = tagMCWeekPartyItem()
+ _pos = temPItemInfo.ReadData(_lpData, _pos)
+ self.PItemInfo.append(temPItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.ActCnt = 0
+ self.TemplateList = list()
+ self.PCount = 0
+ self.PItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.ActCnt
+ length += 1
+ for i in range(self.PCount):
+ length += self.PItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ActCnt)
+ for i in range(self.ActCnt):
+ data = CommFunc.WriteWORD(data, self.TemplateList[i])
+ data = CommFunc.WriteBYTE(data, self.PCount)
+ for i in range(self.PCount):
+ data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ActCnt:%d,
+ TemplateList:%s,
+ PCount:%d,
+ PItemInfo:%s
+ '''\
+ %(
+ self.ActCnt,
+ "...",
+ self.PCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCnt = 0 #(BYTE DayCnt)// 天数
+ DayInfoList = list() #(vector<tagMCWeekPartyDayInfo> DayInfoList)// 每天模板
+ TCount = 0 #(BYTE TCount)// 模板数
+ ActionInfo = list() #(vector<tagMCWeekPartyAction> ActionInfo)// 活动模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0A
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCnt):
+ temDayInfoList = tagMCWeekPartyDayInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TCount):
+ temActionInfo = tagMCWeekPartyAction()
+ _pos = temActionInfo.ReadData(_lpData, _pos)
+ self.ActionInfo.append(temActionInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0A
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.DayCnt = 0
+ self.DayInfoList = list()
+ self.TCount = 0
+ self.ActionInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.DayCnt):
+ length += self.DayInfoList[i].GetLength()
+ length += 1
+ for i in range(self.TCount):
+ length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCnt)
+ for i in range(self.DayCnt):
+ data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TCount)
+ for i in range(self.TCount):
+ data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ DayCnt:%d,
+ DayInfoList:%s,
+ TCount:%d,
+ ActionInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.DayCnt,
+ "...",
+ self.TCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCWeekPartyInfo=tagMCWeekPartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyInfo.Head.Cmd,m_NAtagMCWeekPartyInfo.Head.SubCmd))] = m_NAtagMCWeekPartyInfo
+
+
+#------------------------------------------------------
+# AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
+
+class tagMCWeekPartyTaskInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TemplateID", c_ushort), # 模板ID
+ ("CurTimes", c_int), #已完成次数
+ ("GotTimes", c_int), #已领取次数
+ ]
+
+ 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.TemplateID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCWeekPartyTaskInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
+ TemplateID:%d,
+ CurTimes:%d,
+ GotTimes:%d
+ '''\
+ %(
+ self.TemplateID,
+ self.CurTimes,
+ self.GotTimes
+ )
+ return DumpString
+
+
+class tagMCWeekPartyDayPlayerInfo(Structure):
+ DayIndex = 0 #(DWORD DayIndex)//第X天
+ Point = 0 #(DWORD Point)//积分
+ AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
+ ACount = 0 #(DWORD ACount)//任务条目数
+ TaskList = list() #(vector<tagMCWeekPartyTaskInfo> TaskList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.ACount):
+ temTaskList = tagMCWeekPartyTaskInfo()
+ _pos = temTaskList.ReadData(_lpData, _pos)
+ self.TaskList.append(temTaskList)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.Point = 0
+ self.AwardRecord = 0
+ self.ACount = 0
+ self.TaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ for i in range(self.ACount):
+ length += self.TaskList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.DayIndex)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ data = CommFunc.WriteDWORD(data, self.ACount)
+ for i in range(self.ACount):
+ data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayIndex:%d,
+ Point:%d,
+ AwardRecord:%d,
+ ACount:%d,
+ TaskList:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.Point,
+ self.AwardRecord,
+ self.ACount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0B
+ 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):
+ temDayInfoList = tagMCWeekPartyDayPlayerInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0B
+ self.Count = 0
+ self.DayInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DayInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCWeekPartyPlayerInfo=tagMCWeekPartyPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCWeekPartyPlayerInfo
+
+
+#------------------------------------------------------
# AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
class tagMCXJSDRecharge(Structure):
@@ -22579,310 +26705,6 @@
m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
-
-
-#------------------------------------------------------
-# AB 06 活动物品兑换次数记录 #tagMCExchangeActionItemCntRecord
-
-class tagMCExchangeActionItemCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemID", c_int),
- ("ExcCnt", c_int), # 已兑换次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x06
- self.ItemID = 0
- self.ExcCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCExchangeActionItemCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 06 活动物品兑换次数记录 //tagMCExchangeActionItemCntRecord:
- Cmd:%s,
- SubCmd:%s,
- ItemID:%d,
- ExcCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemID,
- self.ExcCnt
- )
- return DumpString
-
-
-class tagMCExchangeActionItemCntRecord(Structure):
- Head = tagHead()
- ActionKeyLen = 0 #(BYTE ActionKeyLen)
- ActionKey = "" #(String ActionKey)
- RecordCnt = 0 #(BYTE RecordCnt)
- RecordList = list() #(vector<tagMCExchangeActionItemCnt> RecordList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
- self.RecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RecordCnt):
- temRecordList = tagMCExchangeActionItemCnt()
- _pos = temRecordList.ReadData(_lpData, _pos)
- self.RecordList.append(temRecordList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- self.ActionKeyLen = 0
- self.ActionKey = ""
- self.RecordCnt = 0
- self.RecordList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.ActionKey)
- length += 1
- for i in range(self.RecordCnt):
- length += self.RecordList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
- data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
- data = CommFunc.WriteBYTE(data, self.RecordCnt)
- for i in range(self.RecordCnt):
- data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActionKeyLen:%d,
- ActionKey:%s,
- RecordCnt:%d,
- RecordList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActionKeyLen,
- self.ActionKey,
- self.RecordCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCExchangeActionItemCntRecord=tagMCExchangeActionItemCntRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeActionItemCntRecord.Head.Cmd,m_NAtagMCExchangeActionItemCntRecord.Head.SubCmd))] = m_NAtagMCExchangeActionItemCntRecord
-
-
-#------------------------------------------------------
-# AB 07 节日活动奖励状态 #tagMCFestivalLoginAwardState
-
-class tagMCFestivalLoginAwardState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FestivalType", c_ubyte), # 节日类型
- ("State", c_int), # 领取状态 <按位取值,0-未领取 1-可领取 2-已领取>
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x07
- self.FestivalType = 0
- self.State = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFestivalLoginAwardState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 07 节日活动奖励状态 //tagMCFestivalLoginAwardState:
- Cmd:%s,
- SubCmd:%s,
- FestivalType:%d,
- State:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FestivalType,
- self.State
- )
- return DumpString
-
-
-m_NAtagMCFestivalLoginAwardState=tagMCFestivalLoginAwardState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFestivalLoginAwardState.Cmd,m_NAtagMCFestivalLoginAwardState.SubCmd))] = m_NAtagMCFestivalLoginAwardState
-
-
-#------------------------------------------------------
-# AB 02 领地占领每日奖励领奖情况 #tagMCManorDailyAward
-
-class tagMCManorDailyAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("AwardRecord", c_int), # 按位表示每个领地领取情况;0-未领,1-已领
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x02
- self.AwardRecord = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCManorDailyAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 02 领地占领每日奖励领奖情况 //tagMCManorDailyAward:
- Cmd:%s,
- SubCmd:%s,
- AwardRecord:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.AwardRecord
- )
- return DumpString
-
-
-m_NAtagMCManorDailyAward=tagMCManorDailyAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorDailyAward.Cmd,m_NAtagMCManorDailyAward.SubCmd))] = m_NAtagMCManorDailyAward
-
-
-#------------------------------------------------------
-# AB 01 通知领地战结果 #tagMCManorWarResult
-
-class tagMCManorWarResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), # 0-普通信息;1-活动结果总结
- ("Result", c_ubyte), # 战盟胜负情况;0-未知,1-胜利,2-失败
- ("JoinTime", c_int), # 活动时总参与时间,毫秒
- ("JoinAward", c_ubyte), # 参与奖状态;0-不可领,1-可领,2-已领
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x01
- self.Type = 0
- self.Result = 0
- self.JoinTime = 0
- self.JoinAward = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCManorWarResult)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 01 通知领地战结果 //tagMCManorWarResult:
- Cmd:%s,
- SubCmd:%s,
- Type:%d,
- Result:%d,
- JoinTime:%d,
- JoinAward:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type,
- self.Result,
- self.JoinTime,
- self.JoinAward
- )
- return DumpString
-
-
-m_NAtagMCManorWarResult=tagMCManorWarResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult
#------------------------------------------------------
@@ -23146,6 +26968,62 @@
m_NAtagMCDiceAward=tagMCDiceAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceAward.Cmd,m_NAtagMCDiceAward.SubCmd))] = m_NAtagMCDiceAward
+
+
+#------------------------------------------------------
+# AB 25 节日红包信息 #tagMCFeastRedPackInfo
+
+class tagMCFeastRedPackInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MoneyNum", c_int), # 累积抢到多少钱
+ ("GrabCnt", c_ushort), # 已抢红包次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAB
+ self.SubCmd = 0x25
+ 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 = 0xAB
+ self.SubCmd = 0x25
+ self.MoneyNum = 0
+ self.GrabCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastRedPackInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ MoneyNum:%d,
+ GrabCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MoneyNum,
+ self.GrabCnt
+ )
+ return DumpString
+
+
+m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
#------------------------------------------------------
@@ -23970,17 +27848,12 @@
class tagMCClothesCoatLVInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("CoatIndex", c_int), #时装索引
("CoatLV", c_ubyte), #时装等级
- ("CoatExp", c_int), #时装祝福值经验
]
def __init__(self):
self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x02
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -23989,11 +27862,8 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x02
self.CoatIndex = 0
self.CoatLV = 0
- self.CoatExp = 0
return
def GetLength(self):
@@ -24004,26 +27874,21 @@
def OutputString(self):
DumpString = '''// B1 02 玩家时装皮肤激活状态 //tagMCClothesCoatSkinState:
- Cmd:%s,
- SubCmd:%s,
CoatIndex:%d,
- CoatLV:%d,
- CoatExp:%d
+ CoatLV:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.CoatIndex,
- self.CoatLV,
- self.CoatExp
+ self.CoatLV
)
return DumpString
class tagMCClothesCoatSkinState(Structure):
Head = tagHead()
- SkinOpenState = 0 #(DWORD SkinOpenState)//时装激活状态, 按索引表示激活状态
- CoatNum = 0 #(BYTE CoatNum)//时装个数
+ CoatChestLV = 0 #(DWORD CoatChestLV)//时装柜等级
+ CoatChestExp = 0 #(DWORD CoatChestExp)//时装柜经验
+ CoatNum = 0 #(WORD CoatNum)//时装个数
CoatInfoList = list() #(vector<tagMCClothesCoatLVInfo> CoatInfoList)// 时装数据列表
data = None
@@ -24036,8 +27901,9 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.SkinOpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.CoatNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CoatChestLV,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CoatChestExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CoatNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.CoatNum):
temCoatInfoList = tagMCClothesCoatLVInfo()
_pos = temCoatInfoList.ReadData(_lpData, _pos)
@@ -24049,7 +27915,8 @@
self.Head.Clear()
self.Head.Cmd = 0xB1
self.Head.SubCmd = 0x02
- self.SkinOpenState = 0
+ self.CoatChestLV = 0
+ self.CoatChestExp = 0
self.CoatNum = 0
self.CoatInfoList = list()
return
@@ -24058,7 +27925,8 @@
length = 0
length += self.Head.GetLength()
length += 4
- length += 1
+ length += 4
+ length += 2
for i in range(self.CoatNum):
length += self.CoatInfoList[i].GetLength()
@@ -24067,8 +27935,9 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.SkinOpenState)
- data = CommFunc.WriteBYTE(data, self.CoatNum)
+ data = CommFunc.WriteDWORD(data, self.CoatChestLV)
+ data = CommFunc.WriteDWORD(data, self.CoatChestExp)
+ data = CommFunc.WriteWORD(data, self.CoatNum)
for i in range(self.CoatNum):
data = CommFunc.WriteString(data, self.CoatInfoList[i].GetLength(), self.CoatInfoList[i].GetBuffer())
return data
@@ -24076,13 +27945,15 @@
def OutputString(self):
DumpString = '''
Head:%s,
- SkinOpenState:%d,
+ CoatChestLV:%d,
+ CoatChestExp:%d,
CoatNum:%d,
CoatInfoList:%s
'''\
%(
self.Head.OutputString(),
- self.SkinOpenState,
+ self.CoatChestLV,
+ self.CoatChestExp,
self.CoatNum,
"..."
)
@@ -24203,6 +28074,83 @@
m_NAtagMCPlayerDeadTime=tagMCPlayerDeadTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerDeadTime.Cmd,m_NAtagMCPlayerDeadTime.SubCmd))] = m_NAtagMCPlayerDeadTime
+
+
+#------------------------------------------------------
+# B1 07 玩家点数信息 #tagMCRolePointInfo
+
+class tagMCRolePointInfo(Structure):
+ Head = tagHead()
+ PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 点类型个数
+ PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 点类型列表
+ PointValueList = list() #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.PointAttrIDList.append(value)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.PointValueList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x07
+ self.PointAttrIDCount = 0
+ self.PointAttrIDList = list()
+ self.PointValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.PointAttrIDCount
+ length += 2 * self.PointAttrIDCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
+ 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])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PointAttrIDCount:%d,
+ PointAttrIDList:%s,
+ PointValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PointAttrIDCount,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCRolePointInfo=tagMCRolePointInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRolePointInfo.Head.Cmd,m_NAtagMCRolePointInfo.Head.SubCmd))] = m_NAtagMCRolePointInfo
#------------------------------------------------------
@@ -24426,6 +28374,54 @@
#------------------------------------------------------
+#B1 08 开始印记流失时间 #tagMCYinjiStartTime
+
+class tagMCYinjiStartTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ 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
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCYinjiStartTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
+
+
+#------------------------------------------------------
# B2 08 获得仙缘币信息 #tagMCAddXianyuanCoinMsg
class tagMCAddXianyuanCoinMsg(Structure):
@@ -24543,6 +28539,87 @@
m_NAtagMCAddXianyuanCoinMsg=tagMCAddXianyuanCoinMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddXianyuanCoinMsg.Head.Cmd,m_NAtagMCAddXianyuanCoinMsg.Head.SubCmd))] = m_NAtagMCAddXianyuanCoinMsg
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -24727,6 +28804,118 @@
m_NAtagMCFamilyWarBillboard=tagMCFamilyWarBillboard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyWarBillboard.Head.Cmd,m_NAtagMCFamilyWarBillboard.Head.SubCmd))] = m_NAtagMCFamilyWarBillboard
+
+
+#------------------------------------------------------
+# B2 15 副本买buff信息通知 #tagMCFBBuyBuffInfo
+
+class tagMCFBBuyBuffTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("MapID", c_int),
+ ("MoneyCnt", c_ushort),
+ ("BuyTime", c_int),
+ ]
+
+ 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.MapID = 0
+ self.MoneyCnt = 0
+ self.BuyTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFBBuyBuffTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 15 副本买buff信息通知 //tagMCFBBuyBuffInfo:
+ MapID:%d,
+ MoneyCnt:%d,
+ BuyTime:%d
+ '''\
+ %(
+ self.MapID,
+ self.MoneyCnt,
+ self.BuyTime
+ )
+ return DumpString
+
+
+class tagMCFBBuyBuffInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)
+ InfoList = list() #(vector<tagMCFBBuyBuffTime> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ 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):
+ temInfoList = tagMCFBBuyBuffTime()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x15
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFBBuyBuffInfo=tagMCFBBuyBuffInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBBuyBuffInfo.Head.Cmd,m_NAtagMCFBBuyBuffInfo.Head.SubCmd))] = m_NAtagMCFBBuyBuffInfo
#------------------------------------------------------
@@ -25568,6 +29757,58 @@
#------------------------------------------------------
+# B2 13 天星塔通关层数 #tagMCSkyTowerInfo
+
+class tagMCSkyTowerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Floor", c_int), # 已通关层
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x13
+ 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 = 0x13
+ self.Floor = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSkyTowerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ Floor:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Floor
+ )
+ return DumpString
+
+
+m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
+
+
+#------------------------------------------------------
#B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
class tagMCPushNotificationsSetting(Structure):
@@ -25636,6 +29877,58 @@
m_NAtagMCPushNotificationsSetting=tagMCPushNotificationsSetting()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPushNotificationsSetting.Head.Cmd,m_NAtagMCPushNotificationsSetting.Head.SubCmd))] = m_NAtagMCPushNotificationsSetting
+
+
+#------------------------------------------------------
+# B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt
+
+class tagMCZhuXianBossCnt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Cnt", c_ubyte), # 剩余可协助次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x12
+ 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 = 0x12
+ self.Cnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCZhuXianBossCnt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 12 诛仙BOSS协助次数 //tagMCZhuXianBossCnt:
+ Cmd:%s,
+ SubCmd:%s,
+ Cnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Cnt
+ )
+ return DumpString
+
+
+m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
#------------------------------------------------------
@@ -26002,6 +30295,70 @@
#------------------------------------------------------
+#B4 14 根据类型来决定移动的方式 #tagMCMoveByType
+
+class tagMCMoveByType(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ID", c_int), #玩家ID
+ ("PosX", c_ushort), # 目标X
+ ("PosY", c_ushort), # 目标Y
+ ("MoveType", c_ubyte), #移动方式
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ 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 = 0xB4
+ self.SubCmd = 0x14
+ self.ID = 0
+ self.PosX = 0
+ self.PosY = 0
+ self.MoveType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMoveByType)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B4 14 根据类型来决定移动的方式 //tagMCMoveByType:
+ Cmd:%s,
+ SubCmd:%s,
+ ID:%d,
+ PosX:%d,
+ PosY:%d,
+ MoveType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ID,
+ self.PosX,
+ self.PosY,
+ self.MoveType
+ )
+ return DumpString
+
+
+m_NAtagMCMoveByType=tagMCMoveByType()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMoveByType.Cmd,m_NAtagMCMoveByType.SubCmd))] = m_NAtagMCMoveByType
+
+
+#------------------------------------------------------
#B4 07 被动技能页选择(功法) # tagMCPassivePage
class tagMCPassivePage(Structure):
@@ -26228,6 +30585,118 @@
m_NAtagMCPassiveSetAnswer=tagMCPassiveSetAnswer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPassiveSetAnswer.Cmd,m_NAtagMCPassiveSetAnswer.SubCmd))] = m_NAtagMCPassiveSetAnswer
+
+
+#------------------------------------------------------
+# B4 13 通知玩家所有已学技能 #tagMCPlayerSkills
+
+class tagPlayerSkill(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SkillID", c_int), #技能ID
+ ("RemainTime", c_int), #剩余时间
+ ("Proficiency", c_int), #熟练度
+ ]
+
+ 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.SkillID = 0
+ self.RemainTime = 0
+ self.Proficiency = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagPlayerSkill)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 13 通知玩家所有已学技能 //tagMCPlayerSkills:
+ SkillID:%d,
+ RemainTime:%d,
+ Proficiency:%d
+ '''\
+ %(
+ self.SkillID,
+ self.RemainTime,
+ self.Proficiency
+ )
+ return DumpString
+
+
+class tagMCPlayerSkills(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)//技能个数
+ Skills = list() #(vector<tagPlayerSkill> Skills)// 技能数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x13
+ 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):
+ temSkills = tagPlayerSkill()
+ _pos = temSkills.ReadData(_lpData, _pos)
+ self.Skills.append(temSkills)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x13
+ self.Count = 0
+ self.Skills = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.Skills[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.Skills[i].GetLength(), self.Skills[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ Skills:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCPlayerSkills=tagMCPlayerSkills()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerSkills.Head.Cmd,m_NAtagMCPlayerSkills.Head.SubCmd))] = m_NAtagMCPlayerSkills
#------------------------------------------------------
@@ -26834,6 +31303,7 @@
("SeasonID", c_ushort), # 赛季ID
("Order", c_ushort), # 名次
("DanLV", c_ubyte), # 段位
+ ("Score", c_int), # 积分
("AwardLV", c_ubyte), # 赛季结算奖励等级,比如王者法宝的属性取该等级对应属性
]
@@ -26850,6 +31320,7 @@
self.SeasonID = 0
self.Order = 0
self.DanLV = 0
+ self.Score = 0
self.AwardLV = 0
return
@@ -26864,12 +31335,14 @@
SeasonID:%d,
Order:%d,
DanLV:%d,
+ Score:%d,
AwardLV:%d
'''\
%(
self.SeasonID,
self.Order,
self.DanLV,
+ self.Score,
self.AwardLV
)
return DumpString
@@ -26957,6 +31430,7 @@
("DayPKCount", c_ubyte), # 当日已PK次数
("DayWinCount", c_ubyte), # 当日已胜利次数
("DayBuyCount", c_ubyte), # 当日已购买次数
+ ("DayItemAddCount", c_ubyte), # 当日物品增加次数
]
def __init__(self):
@@ -26981,6 +31455,7 @@
self.DayPKCount = 0
self.DayWinCount = 0
self.DayBuyCount = 0
+ self.DayItemAddCount = 0
return
def GetLength(self):
@@ -27000,7 +31475,8 @@
CWinCount:%d,
DayPKCount:%d,
DayWinCount:%d,
- DayBuyCount:%d
+ DayBuyCount:%d,
+ DayItemAddCount:%d
'''\
%(
self.Cmd,
@@ -27012,10 +31488,159 @@
self.CWinCount,
self.DayPKCount,
self.DayWinCount,
- self.DayBuyCount
+ self.DayBuyCount,
+ self.DayItemAddCount
)
return DumpString
m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
+
+
+#------------------------------------------------------
+# C1 06 进入跨服服务器错误 #tagMCEnterCrossServerError
+
+class tagMCEnterCrossServerError(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x06
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCEnterCrossServerError)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 06 进入跨服服务器错误 //tagMCEnterCrossServerError:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCEnterCrossServerError=tagMCEnterCrossServerError()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEnterCrossServerError.Cmd,m_NAtagMCEnterCrossServerError.SubCmd))] = m_NAtagMCEnterCrossServerError
+
+
+#------------------------------------------------------
+# C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer
+
+class tagMCPrepareEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DataMapID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x04
+ 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 = 0xC1
+ self.SubCmd = 0x04
+ self.DataMapID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPrepareEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 04 准备进入跨服服务器 //tagMCPrepareEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s,
+ DataMapID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DataMapID
+ )
+ return DumpString
+
+
+m_NAtagMCPrepareEnterCrossServer=tagMCPrepareEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrepareEnterCrossServer.Cmd,m_NAtagMCPrepareEnterCrossServer.SubCmd))] = m_NAtagMCPrepareEnterCrossServer
+
+
+#------------------------------------------------------
+# C1 05 开始进入跨服服务器 #tagMCStartEnterCrossServer
+
+class tagMCStartEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x05
+ 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 = 0xC1
+ self.SubCmd = 0x05
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCStartEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 05 开始进入跨服服务器 //tagMCStartEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCStartEnterCrossServer=tagMCStartEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
diff --git a/Tool/Robot/Protocol/PacketsSend.py b/Tool/Robot/Protocol/PacketsSend.py
index df74de3..1ae5f43 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):
@@ -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
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMCMD.Head.Cmd,m_NAtagCGMCMD.Head.SubCmd))] = m_NAtagCGMCMD
diff --git a/Tool/Robot/Protocol/PacketsSendPY.py b/Tool/Robot/Protocol/PacketsSendPY.py
index 14cdda3..a765658 100644
--- a/Tool/Robot/Protocol/PacketsSendPY.py
+++ b/Tool/Robot/Protocol/PacketsSendPY.py
@@ -104,60 +104,74 @@
# A0 04 查询副本功能线路人数 #tagCGGetFBLinePlayerCnt
class tagCGGetFBLinePlayerCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FBLineID", c_ubyte),
- ("IsAllLine", c_ubyte),
- ]
+ Head = tagHead()
+ MapID = 0 #(DWORD MapID)
+ LineCount = 0 #(BYTE LineCount)
+ LineIDList = list() #(vector<BYTE> LineIDList)//个数为0时代表查全部
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xA0
- self.SubCmd = 0x04
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x04
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.LineCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.LineIDList.append(value)
+ return _pos
def Clear(self):
- self.Cmd = 0xA0
- self.SubCmd = 0x04
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x04
self.MapID = 0
- self.FBLineID = 0
- self.IsAllLine = 0
+ self.LineCount = 0
+ self.LineIDList = list()
return
def GetLength(self):
- return sizeof(tagCGGetFBLinePlayerCnt)
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 1 * self.LineCount
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteBYTE(data, self.LineCount)
+ for i in range(self.LineCount):
+ data = CommFunc.WriteBYTE(data, self.LineIDList[i])
+ return data
def OutputString(self):
- DumpString = '''// A0 04 查询副本功能线路人数 //tagCGGetFBLinePlayerCnt:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
MapID:%d,
- FBLineID:%d,
- IsAllLine:%d
+ LineCount:%d,
+ LineIDList:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.MapID,
- self.FBLineID,
- self.IsAllLine
+ self.LineCount,
+ "..."
)
return DumpString
m_NAtagCGGetFBLinePlayerCnt=tagCGGetFBLinePlayerCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Cmd,m_NAtagCGGetFBLinePlayerCnt.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Head.Cmd,m_NAtagCGGetFBLinePlayerCnt.Head.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
#------------------------------------------------------
@@ -1349,6 +1363,63 @@
#------------------------------------------------------
+# A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo
+
+class tagCGQueryNotifyEquipDetailInfo(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ 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 = 0xA9
+ self.Head.SubCmd = 0x05
+ 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_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo
+
+
+#------------------------------------------------------
# A9 A3 查看推荐好友 #tagCGQueryRecommendFriends
class tagCGQueryRecommendFriends(Structure):
@@ -1785,58 +1856,6 @@
#------------------------------------------------------
-# AD 01 查询特惠活动信息 #tagCGQueryTeHuiActivetyInfo
-
-class tagCGQueryTeHuiActivetyInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActivityType", c_ubyte), # 活动类型
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAD
- 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 = 0xAD
- self.SubCmd = 0x01
- self.ActivityType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGQueryTeHuiActivetyInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AD 01 查询特惠活动信息 //tagCGQueryTeHuiActivetyInfo:
- Cmd:%s,
- SubCmd:%s,
- ActivityType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActivityType
- )
- return DumpString
-
-
-m_NAtagCGQueryTeHuiActivetyInfo=tagCGQueryTeHuiActivetyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeHuiActivetyInfo.Cmd,m_NAtagCGQueryTeHuiActivetyInfo.SubCmd))] = m_NAtagCGQueryTeHuiActivetyInfo
-
-
-#------------------------------------------------------
# AE 07 运镖时间倒计时结束 #tagCGTruckTimeEnd
class tagCGTruckTimeEnd(Structure):
@@ -2209,7 +2228,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才发名称
@@ -2356,6 +2375,62 @@
#------------------------------------------------------
+# B5 18 拍卖行修改关注物品 #tagCGAttentionAuctionItemChange
+
+class tagCGAttentionAuctionItemChange(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int),
+ ("IsAttention", c_ubyte), #是否关注,取消关注发0
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ 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 = 0xB5
+ self.SubCmd = 0x18
+ self.ItemID = 0
+ self.IsAttention = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGAttentionAuctionItemChange)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 18 拍卖行修改关注物品 //tagCGAttentionAuctionItemChange:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d,
+ IsAttention:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID,
+ self.IsAttention
+ )
+ return DumpString
+
+
+m_NAtagCGAttentionAuctionItemChange=tagCGAttentionAuctionItemChange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionAuctionItemChange.Cmd,m_NAtagCGAttentionAuctionItemChange.SubCmd))] = m_NAtagCGAttentionAuctionItemChange
+
+
+#------------------------------------------------------
# B5 03 交易所查询上架物品#tagCGPYQueryBourseItemOnSale
class tagCGPYQueryBourseItemOnSale(Structure):
@@ -2424,6 +2499,289 @@
m_NAtagCGPYQueryBourseItemOnSale=tagCGPYQueryBourseItemOnSale()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPYQueryBourseItemOnSale.Head.Cmd,m_NAtagCGPYQueryBourseItemOnSale.Head.SubCmd))] = m_NAtagCGPYQueryBourseItemOnSale
+
+
+#------------------------------------------------------
+# B5 16 拍卖行查询关注中的拍品 #tagCGQueryAttentionAuctionItem
+
+class tagCGQueryAttentionAuctionItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ 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 = 0xB5
+ self.SubCmd = 0x16
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryAttentionAuctionItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 16 拍卖行查询关注中的拍品 //tagCGQueryAttentionAuctionItem:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGQueryAttentionAuctionItem=tagCGQueryAttentionAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAttentionAuctionItem.Cmd,m_NAtagCGQueryAttentionAuctionItem.SubCmd))] = m_NAtagCGQueryAttentionAuctionItem
+
+
+#------------------------------------------------------
+# B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem
+
+class tagCGQueryAuctionItem(Structure):
+ Head = tagHead()
+ Job = 0 #(BYTE Job)//过滤职业,0为不限制
+ ItemTypeCount = 0 #(BYTE ItemTypeCount)
+ ItemTypeList = list() #(vector<DWORD> ItemTypeList)//指定的物品类型
+ ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制
+ SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数
+ SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID
+ FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询
+ QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查
+ QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemTypeCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ItemTypeList.append(value)
+ self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SpecItemIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SpecItemIDList.append(value)
+ self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ self.Job = 0
+ self.ItemTypeCount = 0
+ self.ItemTypeList = list()
+ self.ClassLV = 0
+ self.SpecItemIDCount = 0
+ self.SpecItemIDList = list()
+ self.FromItemGUID = ""
+ self.QueryDir = 0
+ self.QueryCount = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.ItemTypeCount
+ length += 1
+ length += 1
+ length += 4 * self.SpecItemIDCount
+ length += 40
+ length += 1
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
+ for i in range(self.ItemTypeCount):
+ data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
+ data = CommFunc.WriteBYTE(data, self.ClassLV)
+ data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
+ for i in range(self.SpecItemIDCount):
+ data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
+ data = CommFunc.WriteString(data, 40, self.FromItemGUID)
+ data = CommFunc.WriteBYTE(data, self.QueryDir)
+ data = CommFunc.WriteBYTE(data, self.QueryCount)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Job:%d,
+ ItemTypeCount:%d,
+ ItemTypeList:%s,
+ ClassLV:%d,
+ SpecItemIDCount:%d,
+ SpecItemIDList:%s,
+ FromItemGUID:%s,
+ QueryDir:%d,
+ QueryCount:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Job,
+ self.ItemTypeCount,
+ "...",
+ self.ClassLV,
+ self.SpecItemIDCount,
+ "...",
+ self.FromItemGUID,
+ self.QueryDir,
+ self.QueryCount
+ )
+ return DumpString
+
+
+m_NAtagCGQueryAuctionItem=tagCGQueryAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Head.Cmd,m_NAtagCGQueryAuctionItem.Head.SubCmd))] = m_NAtagCGQueryAuctionItem
+
+
+#------------------------------------------------------
+# B5 12 拍卖行查询拍卖记录 #tagCGQueryAuctionRecord
+
+class tagCGQueryAuctionRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RecordType", c_ubyte), #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ self.SubCmd = 0x12
+ 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 = 0x12
+ self.RecordType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryAuctionRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord:
+ Cmd:%s,
+ SubCmd:%s,
+ RecordType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RecordType
+ )
+ return DumpString
+
+
+m_NAtagCGQueryAuctionRecord=tagCGQueryAuctionRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionRecord.Cmd,m_NAtagCGQueryAuctionRecord.SubCmd))] = m_NAtagCGQueryAuctionRecord
+
+
+#------------------------------------------------------
+# B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem
+
+class tagCGQueryTagAuctionItem(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ ItemID = 0 #(DWORD ItemID)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x17
+ 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)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x17
+ self.ItemGUID = ""
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID,
+ self.ItemID
+ )
+ return DumpString
+
+
+m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem
#------------------------------------------------------
@@ -2983,6 +3341,54 @@
#------------------------------------------------------
+# C0 03 强制退出跨服状态 #tagCGForceQuitCrossState
+
+class tagCGForceQuitCrossState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x03
+ 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 = 0xC0
+ self.SubCmd = 0x03
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGForceQuitCrossState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 03 强制退出跨服状态 //tagCGForceQuitCrossState:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState
+
+
+#------------------------------------------------------
# C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard
class tagCGViewCrossPKBillboard(Structure):
@@ -2990,8 +3396,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):
@@ -3047,6 +3453,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int), # 跨服玩家ID
+ ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息
]
def __init__(self):
@@ -3064,6 +3471,7 @@
self.Cmd = 0xC0
self.SubCmd = 0x02
self.PlayerID = 0
+ self.EquipClassLV = 0
return
def GetLength(self):
@@ -3076,12 +3484,14 @@
DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo:
Cmd:%s,
SubCmd:%s,
- PlayerID:%d
+ PlayerID:%d,
+ EquipClassLV:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.PlayerID
+ self.PlayerID,
+ self.EquipClassLV
)
return DumpString
@@ -3208,6 +3618,54 @@
m_NAtagCMPCInfo=tagCMPCInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo
+
+
+#------------------------------------------------------
+# A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
+
+class tagCMRefreshMainServerRole(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA1
+ 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 = 0xA1
+ self.SubCmd = 0x08
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRefreshMainServerRole)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A1 08 刷新主服角色信息 //tagCMRefreshMainServerRole:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMRefreshMainServerRole=tagCMRefreshMainServerRole()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMainServerRole.Cmd,m_NAtagCMRefreshMainServerRole.SubCmd))] = m_NAtagCMRefreshMainServerRole
#------------------------------------------------------
@@ -3564,66 +4022,6 @@
#------------------------------------------------------
-# A2 08 购买自定义商店物品 #tagCMBuyShopItem
-
-class tagCMBuyShopItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", c_int),
- ("ItemShopIndex", c_ushort),
- ("BuyCount", c_ushort), #购买数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA2
- 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 = 0xA2
- self.SubCmd = 0x08
- self.ShopID = 0
- self.ItemShopIndex = 0
- self.BuyCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyShopItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 08 购买自定义商店物品 //tagCMBuyShopItem:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d,
- ItemShopIndex:%d,
- BuyCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID,
- self.ItemShopIndex,
- self.BuyCount
- )
- return DumpString
-
-
-m_NAtagCMBuyShopItem=tagCMBuyShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyShopItem.Cmd,m_NAtagCMBuyShopItem.SubCmd))] = m_NAtagCMBuyShopItem
-
-
-#------------------------------------------------------
# A2 10 清除副本CD#tagCMClearFBCD
class tagCMClearFBCD(Structure):
@@ -3676,6 +4074,110 @@
#------------------------------------------------------
+# A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
+
+class tagCMClientExitCustomScene(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x33
+ 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 = 0x33
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMClientExitCustomScene)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 33 前端退出自定义场景 //tagCMClientExitCustomScene:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMClientExitCustomScene=tagCMClientExitCustomScene()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientExitCustomScene.Cmd,m_NAtagCMClientExitCustomScene.SubCmd))] = m_NAtagCMClientExitCustomScene
+
+
+#------------------------------------------------------
+# A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
+
+class tagCMClientStartCustomScene(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("FuncLineID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ 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 = 0xA2
+ self.SubCmd = 0x31
+ self.MapID = 0
+ self.FuncLineID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMClientStartCustomScene)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ FuncLineID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.FuncLineID
+ )
+ return DumpString
+
+
+m_NAtagCMClientStartCustomScene=tagCMClientStartCustomScene()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartCustomScene.Cmd,m_NAtagCMClientStartCustomScene.SubCmd))] = m_NAtagCMClientStartCustomScene
+
+
+#------------------------------------------------------
# A2 24 触碰NPC #tagCMTouchNPC
class tagCMTouchNPC(Structure):
@@ -3725,6 +4227,58 @@
m_NAtagCMTouchNPC=tagCMTouchNPC()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC
+
+
+#------------------------------------------------------
+# A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
+
+class tagCMGetCustomSceneCollectAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("NPCID", c_int), #采集的NPCID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x34
+ 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 = 0x34
+ self.NPCID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGetCustomSceneCollectAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward:
+ Cmd:%s,
+ SubCmd:%s,
+ NPCID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.NPCID
+ )
+ return DumpString
+
+
+m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward
#------------------------------------------------------
@@ -4558,58 +5112,6 @@
#------------------------------------------------------
-# A2 07 请求自定义商店物品信息 #tagCMQueryShopItem
-
-class tagCMQueryShopItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", 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.ShopID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMQueryShopItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 07 请求自定义商店物品信息 //tagCMQueryShopItem:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID
- )
- return DumpString
-
-
-m_NAtagCMQueryShopItem=tagCMQueryShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryShopItem.Cmd,m_NAtagCMQueryShopItem.SubCmd))] = m_NAtagCMQueryShopItem
-
-
-#------------------------------------------------------
# A2 06 快速完成任务#tagCMQuickFinishMission
class tagCMQuickFinishMission(Structure):
@@ -4666,20 +5168,19 @@
#------------------------------------------------------
-# A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem
+# A2 32 神秘商店刷新 #tagCMRefreshMysticalShop
-class tagCMRefreshShopItem(Structure):
+class tagCMRefreshMysticalShop(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ShopID", c_int),
]
def __init__(self):
self.Clear()
self.Cmd = 0xA2
- self.SubCmd = 0x14
+ self.SubCmd = 0x32
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -4689,32 +5190,29 @@
def Clear(self):
self.Cmd = 0xA2
- self.SubCmd = 0x14
- self.ShopID = 0
+ self.SubCmd = 0x32
return
def GetLength(self):
- return sizeof(tagCMRefreshShopItem)
+ return sizeof(tagCMRefreshMysticalShop)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem:
+ DumpString = '''// A2 32 神秘商店刷新 //tagCMRefreshMysticalShop:
Cmd:%s,
- SubCmd:%s,
- ShopID:%d
+ SubCmd:%s
'''\
%(
self.Cmd,
- self.SubCmd,
- self.ShopID
+ self.SubCmd
)
return DumpString
-m_NAtagCMRefreshShopItem=tagCMRefreshShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem
+m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop
#------------------------------------------------------
@@ -5169,6 +5667,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
+ ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息
]
def __init__(self):
@@ -5186,6 +5685,7 @@
self.Cmd = 0xA2
self.SubCmd = 0x12
self.PlayerID = 0
+ self.EquipClassLV = 0
return
def GetLength(self):
@@ -5198,18 +5698,72 @@
DumpString = '''//A2 12 查看玩家详细信息//tagCMViewPlayerInfo:
Cmd:%s,
SubCmd:%s,
- PlayerID:%d
+ PlayerID:%d,
+ EquipClassLV:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.PlayerID
+ self.PlayerID,
+ self.EquipClassLV
)
return DumpString
m_NAtagCMViewPlayerInfo=tagCMViewPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewPlayerInfo.Cmd,m_NAtagCMViewPlayerInfo.SubCmd))] = m_NAtagCMViewPlayerInfo
+
+
+#------------------------------------------------------
+# A3 17 增加果实使用上限 #tagCMAddFruitUseLimit
+
+class tagCMAddFruitUseLimit(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int), #果实物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x17
+ 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 = 0x17
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMAddFruitUseLimit)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 17 增加果实使用上限 //tagCMAddFruitUseLimit:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID
+ )
+ return DumpString
+
+
+m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit
#------------------------------------------------------
@@ -5399,7 +5953,7 @@
("SrcBackpack", c_ubyte), #源背包类型
("DesBackPack", c_ubyte), #目标背包类型
("SrcIndex", c_ushort), #转移物品索引位置;当全部转移时此值无效
- ("IsAll", c_ubyte), #是否全部转移
+ ("IsAll", c_ubyte), #是否全部转移
]
def __init__(self):
@@ -5713,6 +6267,58 @@
#------------------------------------------------------
+# A3 16 装备强化进化 #tagCMEquipPlusEvolve
+
+class tagCMEquipPlusEvolve(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemIndex", c_ushort), #装备在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x16
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEquipPlusEvolve)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
+
+
+#------------------------------------------------------
#A3 05 宝石摘取 #tagCMEquipStonePick
class tagCMEquipStonePick(Structure):
@@ -5993,6 +6599,62 @@
#------------------------------------------------------
+# 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):
@@ -6109,6 +6771,62 @@
m_NAtagCMItemDecompound=tagCMItemDecompound()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemDecompound.Cmd,m_NAtagCMItemDecompound.SubCmd))] = m_NAtagCMItemDecompound
+
+
+#------------------------------------------------------
+# A3 08 物品过期 #tagCMItemTimeout
+
+class tagCMItemTimeout(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PackType", c_ubyte), #背包类型
+ ("ItemIndex", c_ubyte), #物品在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x08
+ self.PackType = 0
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMItemTimeout)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 08 物品过期 //tagCMItemTimeout:
+ Cmd:%s,
+ SubCmd:%s,
+ PackType:%d,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PackType,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMItemTimeout=tagCMItemTimeout()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
#------------------------------------------------------
@@ -6395,118 +7113,6 @@
#------------------------------------------------------
-#A3 17 套装合成#tagCMSuitCompose
-
-class tagCMSuitCompose(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SuiteType", c_ubyte), # 套装类型 1普通 2强化
- ("EquipPlace", c_ubyte), # 装备位置
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x17
- 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 = 0x17
- self.SuiteType = 0
- self.EquipPlace = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSuitCompose)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 17 套装合成//tagCMSuitCompose:
- Cmd:%s,
- SubCmd:%s,
- SuiteType:%d,
- EquipPlace:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SuiteType,
- self.EquipPlace
- )
- return DumpString
-
-
-m_NAtagCMSuitCompose=tagCMSuitCompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuitCompose.Cmd,m_NAtagCMSuitCompose.SubCmd))] = m_NAtagCMSuitCompose
-
-
-#------------------------------------------------------
-# A3 08 套装拆解 #tagCMSuiteDecompose
-
-class tagCMSuiteDecompose(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EquipPlace", c_ubyte), #部位索引
- ("SuiteType", c_ubyte), #套装类型 0代表全部类型
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- 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 = 0xA3
- self.SubCmd = 0x08
- self.EquipPlace = 0
- self.SuiteType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSuiteDecompose)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 08 套装拆解 //tagCMSuiteDecompose:
- Cmd:%s,
- SubCmd:%s,
- EquipPlace:%d,
- SuiteType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EquipPlace,
- self.SuiteType
- )
- return DumpString
-
-
-m_NAtagCMSuiteDecompose=tagCMSuiteDecompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuiteDecompose.Cmd,m_NAtagCMSuiteDecompose.SubCmd))] = m_NAtagCMSuiteDecompose
-
-
-#------------------------------------------------------
#A3 20 将魔方背包中的物品转移到人物背包中 #tagCMMagicItemPutInItemPack
class tagCMMagicItemPutInItemPack(Structure):
@@ -6637,70 +7243,6 @@
#------------------------------------------------------
-#A3 21 使用特殊运营物品 #tagCMUseSpecialItem
-
-class tagCMUseSpecialItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SpeicalItemType", c_ubyte), #特殊运营物品类型,0打折卡,1多选礼包
- ("ItemID", c_int), #物品ID
- ("ItemIndex", c_ubyte), #物品在背包中的索引位置
- ("Select", c_ubyte), #选择,只对多选礼包有用
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x21
- 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 = 0x21
- self.SpeicalItemType = 0
- self.ItemID = 0
- self.ItemIndex = 0
- self.Select = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUseSpecialItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 21 使用特殊运营物品 //tagCMUseSpecialItem:
- Cmd:%s,
- SubCmd:%s,
- SpeicalItemType:%d,
- ItemID:%d,
- ItemIndex:%d,
- Select:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SpeicalItemType,
- self.ItemID,
- self.ItemIndex,
- self.Select
- )
- return DumpString
-
-
-m_NAtagCMUseSpecialItem=tagCMUseSpecialItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSpecialItem.Cmd,m_NAtagCMUseSpecialItem.SubCmd))] = m_NAtagCMUseSpecialItem
-
-
-#------------------------------------------------------
# A3 2F 宗门试炼兑换 #tagCMTrialExchange
class tagCMTrialExchange(Structure):
@@ -6750,6 +7292,58 @@
m_NAtagCMTrialExchange=tagCMTrialExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTrialExchange.Cmd,m_NAtagCMTrialExchange.SubCmd))] = m_NAtagCMTrialExchange
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -6932,6 +7526,90 @@
#------------------------------------------------------
+# 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):
@@ -6981,66 +7659,6 @@
m_NAtagCMBuySomething=tagCMBuySomething()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuySomething.Cmd,m_NAtagCMBuySomething.SubCmd))] = m_NAtagCMBuySomething
-
-
-#------------------------------------------------------
-# A5 32 购买商城物品 #tagCMBuyStoreItem
-
-class tagCMBuyStoreItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), #1钻石,2绑定钻石,3银子,4银票
- ("ItemID", c_int), #物品ID
- ("BuyCount", c_ushort), #购买数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x32
- 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 = 0x32
- self.Type = 0
- self.ItemID = 0
- self.BuyCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyStoreItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 32 购买商城物品 //tagCMBuyStoreItem:
- Cmd:%s,
- SubCmd:%s,
- Type:%d,
- ItemID:%d,
- BuyCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type,
- self.ItemID,
- self.BuyCount
- )
- return DumpString
-
-
-m_NAtagCMBuyStoreItem=tagCMBuyStoreItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyStoreItem.Cmd,m_NAtagCMBuyStoreItem.SubCmd))] = m_NAtagCMBuyStoreItem
#------------------------------------------------------
@@ -7149,58 +7767,6 @@
m_NAtagCMActiveAllEquipAttr=tagCMActiveAllEquipAttr()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveAllEquipAttr.Cmd,m_NAtagCMActiveAllEquipAttr.SubCmd))] = m_NAtagCMActiveAllEquipAttr
-
-
-#------------------------------------------------------
-# A5 12 激活法宝之魂 #tagCMActiveMWSoul
-
-class tagCMActiveMWSoul(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ID", c_ubyte), #编号
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x12
- 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 = 0x12
- self.ID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMActiveMWSoul)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 12 激活法宝之魂 //tagCMActiveMWSoul:
- Cmd:%s,
- SubCmd:%s,
- ID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ID
- )
- return DumpString
-
-
-m_NAtagCMActiveMWSoul=tagCMActiveMWSoul()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveMWSoul.Cmd,m_NAtagCMActiveMWSoul.SubCmd))] = m_NAtagCMActiveMWSoul
#------------------------------------------------------
@@ -7671,6 +8237,62 @@
#------------------------------------------------------
+# A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
+
+class tagCMBuyDailyActionCnt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActionID", c_int), # ID
+ ("AddType", c_ubyte), # 0-花仙玉 1-用物品
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x25
+ 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 = 0x25
+ self.ActionID = 0
+ self.AddType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMBuyDailyActionCnt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 25 购买日常活动次数 //tagCMBuyDailyActionCnt:
+ Cmd:%s,
+ SubCmd:%s,
+ ActionID:%d,
+ AddType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActionID,
+ self.AddType
+ )
+ return DumpString
+
+
+m_NAtagCMBuyDailyActionCnt=tagCMBuyDailyActionCnt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyDailyActionCnt.Cmd,m_NAtagCMBuyDailyActionCnt.SubCmd))] = m_NAtagCMBuyDailyActionCnt
+
+
+#------------------------------------------------------
#A5 75 购买副本进入次数#tagCMBuyEnterCount
class tagCMBuyEnterCount(Structure):
@@ -7820,106 +8442,6 @@
m_NAtagCMBuyKillBossCnt=tagCMBuyKillBossCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyKillBossCnt.Cmd,m_NAtagCMBuyKillBossCnt.SubCmd))] = m_NAtagCMBuyKillBossCnt
-
-
-#------------------------------------------------------
-#A5 36 天梯清除挑战CD#tagCMHighLadderClearCD
-
-class tagCMHighLadderClearCD(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x36
- 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 = 0x36
- return
-
- def GetLength(self):
- return sizeof(tagCMHighLadderClearCD)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 36 天梯清除挑战CD//tagCMHighLadderClearCD:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMHighLadderClearCD=tagCMHighLadderClearCD()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderClearCD.Cmd,m_NAtagCMHighLadderClearCD.SubCmd))] = m_NAtagCMHighLadderClearCD
-
-
-#------------------------------------------------------
-#A5 35 查询天梯竞技场奖励#tagCMQueryHighLadderReward
-
-class tagCMQueryHighLadderReward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), #0,查询 1,领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x35
- 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 = 0x35
- self.Type = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMQueryHighLadderReward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 35 查询天梯竞技场奖励//tagCMQueryHighLadderReward:
- Cmd:%s,
- SubCmd:%s,
- Type:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type
- )
- return DumpString
-
-
-m_NAtagCMQueryHighLadderReward=tagCMQueryHighLadderReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderReward.Cmd,m_NAtagCMQueryHighLadderReward.SubCmd))] = m_NAtagCMQueryHighLadderReward
#------------------------------------------------------
@@ -8128,6 +8650,83 @@
#------------------------------------------------------
+# A5 20 时装分解 #tagCMCoatDecompose
+
+class tagCMCoatDecompose(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 = 0xA5
+ self.Head.SubCmd = 0x20
+ 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 = 0xA5
+ self.Head.SubCmd = 0x20
+ 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_NAtagCMCoatDecompose=tagCMCoatDecompose()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCoatDecompose.Head.Cmd,m_NAtagCMCoatDecompose.Head.SubCmd))] = m_NAtagCMCoatDecompose
+
+
+#------------------------------------------------------
# A5 0B 玩家时装升级 #tagCMCoatUp
class tagCMCoatUp(Structure):
@@ -8135,7 +8734,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("CoatIndex", c_ubyte), # 时装索引
+ ("CoatIndex", c_int), # 时装索引
]
def __init__(self):
@@ -8669,6 +9268,90 @@
#------------------------------------------------------
+# A5 C5 装备部位升星 #tagCMEquipPartStarUp
+
+class tagCMEquipPartStarUp(Structure):
+ Head = tagHead()
+ EquipPackIndex = 0 #(WORD EquipPackIndex)// 部位格子索引
+ CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数
+ CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引
+ CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.CostEquipIndex.append(value)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CostEquipID.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ self.EquipPackIndex = 0
+ self.CostEquipCnt = 0
+ self.CostEquipIndex = list()
+ self.CostEquipID = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += 2 * self.CostEquipCnt
+ length += 4 * self.CostEquipCnt
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.EquipPackIndex)
+ data = CommFunc.WriteBYTE(data, self.CostEquipCnt)
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipPackIndex:%d,
+ CostEquipCnt:%d,
+ CostEquipIndex:%s,
+ CostEquipID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipPackIndex,
+ self.CostEquipCnt,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
+
+
+#------------------------------------------------------
# A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
class tagCMExchangeMasterEXP(Structure):
@@ -8722,62 +9405,6 @@
m_NAtagCMExchangeMasterEXP=tagCMExchangeMasterEXP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeMasterEXP.Cmd,m_NAtagCMExchangeMasterEXP.SubCmd))] = m_NAtagCMExchangeMasterEXP
-
-
-#------------------------------------------------------
-# A5 46 兑换灵力 #tagCMExchangeReiki
-
-class tagCMExchangeReiki(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ExType", c_ubyte), #兑换类型0-降级兑换; 1-钻石购买
- ("ExData", c_ubyte), #兑换扩展数据(钻石购买可发送购买的消耗索引)
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x46
- 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 = 0x46
- self.ExType = 0
- self.ExData = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMExchangeReiki)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki:
- Cmd:%s,
- SubCmd:%s,
- ExType:%d,
- ExData:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ExType,
- self.ExData
- )
- return DumpString
-
-
-m_NAtagCMExchangeReiki=tagCMExchangeReiki()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki
#------------------------------------------------------
@@ -9327,54 +9954,6 @@
#------------------------------------------------------
-#A5 37 天梯增加挑战次数#tagCMHighLadderAddCount
-
-class tagCMHighLadderAddCount(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x37
- 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 = 0x37
- return
-
- def GetLength(self):
- return sizeof(tagCMHighLadderAddCount)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 37 天梯增加挑战次数//tagCMHighLadderAddCount:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMHighLadderAddCount=tagCMHighLadderAddCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderAddCount.Cmd,m_NAtagCMHighLadderAddCount.SubCmd))] = m_NAtagCMHighLadderAddCount
-
-
-#------------------------------------------------------
# A5 27 坐骑提升 #tagCMHorseUp
class tagCMHorseUp(Structure):
@@ -9435,114 +10014,6 @@
#------------------------------------------------------
-# A5 0D 升级法宝技能 #tagCMMagicWeaponSkillUp
-
-class tagCMMagicWeaponSkillUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SkillTypeID", c_ushort),
- ("CostIndex", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x0D
- self.SkillTypeID = 0
- self.CostIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMagicWeaponSkillUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 0D 升级法宝技能 //tagCMMagicWeaponSkillUp:
- Cmd:%s,
- SubCmd:%s,
- SkillTypeID:%d,
- CostIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SkillTypeID,
- self.CostIndex
- )
- return DumpString
-
-
-m_NAtagCMMagicWeaponSkillUp=tagCMMagicWeaponSkillUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponSkillUp.Cmd,m_NAtagCMMagicWeaponSkillUp.SubCmd))] = m_NAtagCMMagicWeaponSkillUp
-
-
-#------------------------------------------------------
-# A5 16 法宝状态记录 #tagCMMagicWeaponState
-
-class tagCMMagicWeaponState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MWID", c_int), #法宝ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x16
- self.MWID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMagicWeaponState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
- Cmd:%s,
- SubCmd:%s,
- MWID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MWID
- )
- return DumpString
-
-
-m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
-
-
-#------------------------------------------------------
# A5 15 提升法宝等级 #tagCMMagicWeaponUp
class tagCMMagicWeaponUp(Structure):
@@ -9592,62 +10063,6 @@
m_NAtagCMMagicWeaponUp=tagCMMagicWeaponUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponUp.Cmd,m_NAtagCMMagicWeaponUp.SubCmd))] = m_NAtagCMMagicWeaponUp
-
-
-#------------------------------------------------------
-# A5 77 玩家精炼法宝 #tagCMMWRefine
-
-class tagCMMWRefine(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MWID", c_int), # 法宝ID
- ("MaterialID", c_int), #材料ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x77
- 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 = 0x77
- self.MWID = 0
- self.MaterialID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMWRefine)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 77 玩家精炼法宝 //tagCMMWRefine:
- Cmd:%s,
- SubCmd:%s,
- MWID:%d,
- MaterialID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MWID,
- self.MaterialID
- )
- return DumpString
-
-
-m_NAtagCMMWRefine=tagCMMWRefine()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMWRefine.Cmd,m_NAtagCMMWRefine.SubCmd))] = m_NAtagCMMWRefine
#------------------------------------------------------
@@ -9888,8 +10303,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("RefineNum", c_ushort), # 配方编号
- ("UseRateItem", c_int), # 附加材料ID
+ ("AlchemyID", c_int), # 丹药ID
+ ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
]
def __init__(self):
@@ -9906,8 +10321,8 @@
def Clear(self):
self.Cmd = 0xA5
self.SubCmd = 0x76
- self.RefineNum = 0
- self.UseRateItem = 0
+ self.AlchemyID = 0
+ self.DoType = 0
return
def GetLength(self):
@@ -9920,14 +10335,14 @@
DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine:
Cmd:%s,
SubCmd:%s,
- RefineNum:%d,
- UseRateItem:%d
+ AlchemyID:%d,
+ DoType:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.RefineNum,
- self.UseRateItem
+ self.AlchemyID,
+ self.DoType
)
return DumpString
@@ -9982,54 +10397,6 @@
m_NAtagCMPrayElixir=tagCMPrayElixir()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir
-
-
-#------------------------------------------------------
-#A5 34 查询天梯竞技场状态#tagCMQueryHighLadderState
-
-class tagCMQueryHighLadderState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x34
- 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 = 0x34
- return
-
- def GetLength(self):
- return sizeof(tagCMQueryHighLadderState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 34 查询天梯竞技场状态//tagCMQueryHighLadderState:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMQueryHighLadderState=tagCMQueryHighLadderState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderState.Cmd,m_NAtagCMQueryHighLadderState.SubCmd))] = m_NAtagCMQueryHighLadderState
#------------------------------------------------------
@@ -10213,58 +10580,6 @@
#------------------------------------------------------
-# A5 0C 使用道具减少渡劫打坐时间 #tagCMReduceSitTime
-
-class tagCMReduceSitTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemCnt", c_ushort), # 道具数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x0C
- 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 = 0x0C
- self.ItemCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMReduceSitTime)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 0C 使用道具减少渡劫打坐时间 //tagCMReduceSitTime:
- Cmd:%s,
- SubCmd:%s,
- ItemCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemCnt
- )
- return DumpString
-
-
-m_NAtagCMReduceSitTime=tagCMReduceSitTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReduceSitTime.Cmd,m_NAtagCMReduceSitTime.SubCmd))] = m_NAtagCMReduceSitTime
-
-
-#------------------------------------------------------
# A5 74 刷新悬赏任务 #tagCMRefreshArrestTask
class tagCMRefreshArrestTask(Structure):
@@ -10362,54 +10677,6 @@
m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt
-
-
-#------------------------------------------------------
-# A5 47 玩家转生 #tagCMReincarnation
-
-class tagCMReincarnation(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x47
- 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 = 0x47
- return
-
- def GetLength(self):
- return sizeof(tagCMReincarnation)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 47 玩家转生 //tagCMReincarnation:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMReincarnation=tagCMReincarnation()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReincarnation.Cmd,m_NAtagCMReincarnation.SubCmd))] = m_NAtagCMReincarnation
#------------------------------------------------------
@@ -10790,6 +11057,58 @@
#------------------------------------------------------
+# A5 16 选择技能五行专精 #tagCMSelectSkillElement
+
+class tagCMSelectSkillElement(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("SkillTypeID", c_int), # 专精技能ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ 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 = 0xA5
+ self.SubCmd = 0x16
+ self.SkillTypeID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSelectSkillElement)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement:
+ Cmd:%s,
+ SubCmd:%s,
+ SkillTypeID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.SkillTypeID
+ )
+ return DumpString
+
+
+m_NAtagCMSelectSkillElement=tagCMSelectSkillElement()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement
+
+
+#------------------------------------------------------
# A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
class tagCMStartBindJadeWheel(Structure):
@@ -10835,6 +11154,106 @@
m_NAtagCMStartBindJadeWheel=tagCMStartBindJadeWheel()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartBindJadeWheel.Cmd,m_NAtagCMStartBindJadeWheel.SubCmd))] = m_NAtagCMStartBindJadeWheel
+
+
+#------------------------------------------------------
+# A5 21 境界修为池提取 #tagCMTakeOutRealmExp
+
+class tagCMTakeOutRealmExp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x21
+ 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 = 0x21
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTakeOutRealmExp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 21 境界修为池提取 //tagCMTakeOutRealmExp:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMTakeOutRealmExp=tagCMTakeOutRealmExp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeOutRealmExp.Cmd,m_NAtagCMTakeOutRealmExp.SubCmd))] = m_NAtagCMTakeOutRealmExp
+
+
+#------------------------------------------------------
+# A5 12 感应法宝 #tagCMThinkMagicWeapon
+
+class tagCMThinkMagicWeapon(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MWID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x12
+ 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 = 0x12
+ self.MWID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMThinkMagicWeapon)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 12 感应法宝 //tagCMThinkMagicWeapon:
+ Cmd:%s,
+ SubCmd:%s,
+ MWID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MWID
+ )
+ return DumpString
+
+
+m_NAtagCMThinkMagicWeapon=tagCMThinkMagicWeapon()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMThinkMagicWeapon.Cmd,m_NAtagCMThinkMagicWeapon.SubCmd))] = m_NAtagCMThinkMagicWeapon
#------------------------------------------------------
@@ -11051,6 +11470,58 @@
m_NAtagUseNewGuyCard=tagUseNewGuyCard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUseNewGuyCard.Head.Cmd,m_NAtagUseNewGuyCard.Head.SubCmd))] = m_NAtagUseNewGuyCard
+
+
+#------------------------------------------------------
+# A5 26 寻访仙域 #tagCMVisitFairyDomain
+
+class tagCMVisitFairyDomain(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ubyte), #0-开始寻访 1-结束寻访
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x26
+ 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 = 0x26
+ self.Type = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMVisitFairyDomain)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 26 寻访仙域 //tagCMVisitFairyDomain:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type
+ )
+ return DumpString
+
+
+m_NAtagCMVisitFairyDomain=tagCMVisitFairyDomain()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVisitFairyDomain.Cmd,m_NAtagCMVisitFairyDomain.SubCmd))] = m_NAtagCMVisitFairyDomain
#------------------------------------------------------
@@ -11847,6 +12318,54 @@
#------------------------------------------------------
+# A8 06 查询充值结果 #tagCMQueryRecharge
+
+class tagCMQueryRecharge(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA8
+ 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 = 0xA8
+ self.SubCmd = 0x06
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMQueryRecharge)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 06 查询充值结果 //tagCMQueryRecharge:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMQueryRecharge=tagCMQueryRecharge()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryRecharge.Cmd,m_NAtagCMQueryRecharge.SubCmd))] = m_NAtagCMQueryRecharge
+
+
+#------------------------------------------------------
# A8 05 VIP杀怪等级信息同步开关 #tagCMVIPKillNPCLVInfoSwitch
class tagCMVIPKillNPCLVInfoSwitch(Structure):
@@ -12071,174 +12590,6 @@
#------------------------------------------------------
-# AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward
-
-class tagCMGetClassUPDayAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DayType", c_ubyte), # 升阶日类型
- ("ClassLV", c_ubyte), # 阶级
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x02
- self.DayType = 0
- self.ClassLV = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetClassUPDayAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 02 领取升阶功能特惠奖励 //tagCMGetClassUPDayAward:
- Cmd:%s,
- SubCmd:%s,
- DayType:%d,
- ClassLV:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DayType,
- self.ClassLV
- )
- return DumpString
-
-
-m_NAtagCMGetClassUPDayAward=tagCMGetClassUPDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetClassUPDayAward.Cmd,m_NAtagCMGetClassUPDayAward.SubCmd))] = m_NAtagCMGetClassUPDayAward
-
-
-#------------------------------------------------------
-# AA 04 领取消费奖励 #tagCMGetCostAward
-
-class tagCMGetCostAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("Index", c_ubyte), # 索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x04
- 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 = 0x04
- self.ActionID = 0
- self.Index = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetCostAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 04 领取消费奖励 //tagCMGetCostAward:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- Index:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.Index
- )
- return DumpString
-
-
-m_NAtagCMGetCostAward=tagCMGetCostAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCostAward.Cmd,m_NAtagCMGetCostAward.SubCmd))] = m_NAtagCMGetCostAward
-
-
-#------------------------------------------------------
-# AA 03 领取充值特惠奖励 #tagCMGetRechargeTeHuiAward
-
-class tagCMGetRechargeTeHuiAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("Index", c_ubyte), # 规则索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x03
- 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 = 0x03
- self.ActionID = 0
- self.Index = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetRechargeTeHuiAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 03 领取充值特惠奖励 //tagCMGetRechargeTeHuiAward:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- Index:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.Index
- )
- return DumpString
-
-
-m_NAtagCMGetRechargeTeHuiAward=tagCMGetRechargeTeHuiAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetRechargeTeHuiAward.Cmd,m_NAtagCMGetRechargeTeHuiAward.SubCmd))] = m_NAtagCMGetRechargeTeHuiAward
-
-
-#------------------------------------------------------
#AA 01 领取累计登陆礼 # tagCMGetTotalLoginDayAward
class tagCMGetTotalLoginDayAward(Structure):
@@ -12288,6 +12639,54 @@
m_NAtagCMGetTotalLoginDayAward=tagCMGetTotalLoginDayAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTotalLoginDayAward.Cmd,m_NAtagCMGetTotalLoginDayAward.SubCmd))] = m_NAtagCMGetTotalLoginDayAward
+
+
+#------------------------------------------------------
+# AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure
+
+class tagCMStartLuckyTreasure(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ 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 = 0xAA
+ self.SubCmd = 0x08
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMStartLuckyTreasure)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 08 开始幸运鉴宝 //tagCMStartLuckyTreasure:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
#------------------------------------------------------
@@ -12347,6 +12746,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("RedPaketID", c_int), # 红包ID
+ ("GetWay", c_ubyte), #获得途径
]
def __init__(self):
@@ -12364,6 +12764,7 @@
self.Cmd = 0xAB
self.SubCmd = 0x12
self.RedPaketID = 0
+ self.GetWay = 0
return
def GetLength(self):
@@ -12376,12 +12777,14 @@
DumpString = '''// AB 12 抢红包 //tagCMGrabFamilyRedPacket:
Cmd:%s,
SubCmd:%s,
- RedPaketID:%d
+ RedPaketID:%d,
+ GetWay:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.RedPaketID
+ self.RedPaketID,
+ self.GetWay
)
return DumpString
@@ -12496,240 +12899,6 @@
m_NAtagCMDiceTake=tagCMDiceTake()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDiceTake.Cmd,m_NAtagCMDiceTake.SubCmd))] = m_NAtagCMDiceTake
-
-
-#------------------------------------------------------
-# AB 06 活动物品兑换 #tagCMExchangeActionItem
-
-class tagCMExchangeActionItem(Structure):
- Head = tagHead()
- ActionKeyLen = 0 #(BYTE ActionKeyLen)
- ActionKey = "" #(String ActionKey)
- ItemID = 0 #(DWORD ItemID)// 兑换的目标物品ID
- ExcCnt = 0 #(WORD ExcCnt)// 兑换个数,默认1个
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExcCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- self.ActionKeyLen = 0
- self.ActionKey = ""
- self.ItemID = 0
- self.ExcCnt = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.ActionKey)
- length += 4
- length += 2
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
- data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteWORD(data, self.ExcCnt)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActionKeyLen:%d,
- ActionKey:%s,
- ItemID:%d,
- ExcCnt:%d
- '''\
- %(
- self.Head.OutputString(),
- self.ActionKeyLen,
- self.ActionKey,
- self.ItemID,
- self.ExcCnt
- )
- return DumpString
-
-
-m_NAtagCMExchangeActionItem=tagCMExchangeActionItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeActionItem.Head.Cmd,m_NAtagCMExchangeActionItem.Head.SubCmd))] = m_NAtagCMExchangeActionItem
-
-
-#------------------------------------------------------
-# AB 07 领取节日登陆奖励 #tagCMGetFestivalLoginAward
-
-class tagCMGetFestivalLoginAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FestivalType", c_ubyte), # 节日类型
- ("DayIndex", c_ubyte), # 节日天 <从节日活动开始日0天开始>
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x07
- self.FestivalType = 0
- self.DayIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetFestivalLoginAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 07 领取节日登陆奖励 //tagCMGetFestivalLoginAward:
- Cmd:%s,
- SubCmd:%s,
- FestivalType:%d,
- DayIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FestivalType,
- self.DayIndex
- )
- return DumpString
-
-
-m_NAtagCMGetFestivalLoginAward=tagCMGetFestivalLoginAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFestivalLoginAward.Cmd,m_NAtagCMGetFestivalLoginAward.SubCmd))] = m_NAtagCMGetFestivalLoginAward
-
-
-#------------------------------------------------------
-# AB 02 领取领地争夺战每日奖励 #tagCMGetManorWarDailyAward
-
-class tagCMGetManorWarDailyAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int), # 领地id
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x02
- self.MapID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetManorWarDailyAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 02 领取领地争夺战每日奖励 //tagCMGetManorWarDailyAward:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID
- )
- return DumpString
-
-
-m_NAtagCMGetManorWarDailyAward=tagCMGetManorWarDailyAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarDailyAward.Cmd,m_NAtagCMGetManorWarDailyAward.SubCmd))] = m_NAtagCMGetManorWarDailyAward
-
-
-#------------------------------------------------------
-# AB 01 领取领地争夺战参与奖 #tagCMGetManorWarJoinAward
-
-class tagCMGetManorWarJoinAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x01
- return
-
- def GetLength(self):
- return sizeof(tagCMGetManorWarJoinAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 01 领取领地争夺战参与奖 //tagCMGetManorWarJoinAward:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMGetManorWarJoinAward=tagCMGetManorWarJoinAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarJoinAward.Cmd,m_NAtagCMGetManorWarJoinAward.SubCmd))] = m_NAtagCMGetManorWarJoinAward
#------------------------------------------------------
@@ -13609,6 +13778,118 @@
#------------------------------------------------------
+# B1 0A 副本购买buff #tagCMFBBuyBuff
+
+class tagCMFBBuyBuff(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("MoneyCnt", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ self.SubCmd = 0x0A
+ 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 = 0x0A
+ self.MapID = 0
+ self.MoneyCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFBBuyBuff)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 0A 副本购买buff //tagCMFBBuyBuff:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ MoneyCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.MoneyCnt
+ )
+ return DumpString
+
+
+m_NAtagCMFBBuyBuff=tagCMFBBuyBuff()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff
+
+
+#------------------------------------------------------
+# 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):
@@ -13825,6 +14106,62 @@
#------------------------------------------------------
+# 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):
@@ -13874,6 +14211,131 @@
m_NAtagCMSetFMTDouble=tagCMSetFMTDouble()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetFMTDouble.Cmd,m_NAtagCMSetFMTDouble.SubCmd))] = m_NAtagCMSetFMTDouble
+
+
+#------------------------------------------------------
+# B2 06 玩家加点 #tagCMAddPoint
+
+class tagCMAddPoint(Structure):
+ Head = tagHead()
+ PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数
+ PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表
+ PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.PointAttrIDList.append(value)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.PointValueList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x06
+ self.PointAttrIDCount = 0
+ self.PointAttrIDList = list()
+ self.PointValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.PointAttrIDCount
+ length += 2 * self.PointAttrIDCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
+ 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])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PointAttrIDCount:%d,
+ PointAttrIDList:%s,
+ PointValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PointAttrIDCount,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMAddPoint=tagCMAddPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint
+
+
+#------------------------------------------------------
+# B2 07 重置加点 #tagCMResetAttrPoint
+
+class tagCMResetAttrPoint(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ 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 = 0xB2
+ self.SubCmd = 0x07
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMResetAttrPoint)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 07 重置加点 //tagCMResetAttrPoint:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMResetAttrPoint=tagCMResetAttrPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint
#------------------------------------------------------
@@ -14160,6 +14622,62 @@
#------------------------------------------------------
+# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
+
+class tagCMSummonPriWoodPile(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("NPCID", c_int),
+ ("Count", c_ubyte), #默认1个,最多5个
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0C
+ 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 = 0x0C
+ self.NPCID = 0
+ self.Count = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSummonPriWoodPile)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile:
+ Cmd:%s,
+ SubCmd:%s,
+ NPCID:%d,
+ Count:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.NPCID,
+ self.Count
+ )
+ return DumpString
+
+
+m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
+
+
+#------------------------------------------------------
#B4 06 战斗移动 # tagCMFightMove
class tagCMFightMove(Structure):
@@ -14225,6 +14743,66 @@
m_NAtagCMFightMove=tagCMFightMove()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFightMove.Cmd,m_NAtagCMFightMove.SubCmd))] = m_NAtagCMFightMove
+
+
+#------------------------------------------------------
+#B4 0B 根据类型来决定移动的方式 #tagCMMoveByType
+
+class tagCMMoveByType(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PosX", c_ushort), # 目标X
+ ("PosY", c_ushort), # 目标Y
+ ("MoveType", c_ubyte), #移动方式
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0B
+ 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 = 0x0B
+ self.PosX = 0
+ self.PosY = 0
+ self.MoveType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMoveByType)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B4 0B 根据类型来决定移动的方式 //tagCMMoveByType:
+ Cmd:%s,
+ SubCmd:%s,
+ PosX:%d,
+ PosY:%d,
+ MoveType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PosX,
+ self.PosY,
+ self.MoveType
+ )
+ return DumpString
+
+
+m_NAtagCMMoveByType=tagCMMoveByType()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoveByType.Cmd,m_NAtagCMMoveByType.SubCmd))] = m_NAtagCMMoveByType
#------------------------------------------------------
@@ -14877,6 +15455,62 @@
#------------------------------------------------------
+# B4 0D 战斗印记 #tagCMYinji
+
+class tagCMYinji(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Count", c_ubyte),
+ ("Type", c_ubyte), # 0 加,1减
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ 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 = 0xB4
+ self.SubCmd = 0x0D
+ self.Count = 0
+ self.Type = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMYinji)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
+ Cmd:%s,
+ SubCmd:%s,
+ Count:%d,
+ Type:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Count,
+ self.Type
+ )
+ return DumpString
+
+
+m_NAtagCMYinji=tagCMYinji()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
+
+
+#------------------------------------------------------
#B4 03 吸引NPC仇恨 #tagNPCAttention
class tagNPCAttention(Structure):
@@ -14941,6 +15575,70 @@
m_NAtagNPCAttention=tagNPCAttention()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagNPCAttention.Head.Cmd,m_NAtagNPCAttention.Head.SubCmd))] = m_NAtagNPCAttention
+
+
+#------------------------------------------------------
+# B5 14 拍卖行竞价物品 #tagCMBiddingAuctionItem
+
+class tagCMBiddingAuctionItem(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ BiddingPrice = 0 #(WORD BiddingPrice)//竞价价格
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x14
+ 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)
+ self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x14
+ self.ItemGUID = ""
+ self.BiddingPrice = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteWORD(data, self.BiddingPrice)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s,
+ BiddingPrice:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID,
+ self.BiddingPrice
+ )
+ return DumpString
+
+
+m_NAtagCMBiddingAuctionItem=tagCMBiddingAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBiddingAuctionItem.Head.Cmd,m_NAtagCMBiddingAuctionItem.Head.SubCmd))] = m_NAtagCMBiddingAuctionItem
#------------------------------------------------------
@@ -15093,6 +15791,58 @@
#------------------------------------------------------
+# B5 13 拍卖行上架拍品 #tagCMSellAuctionItem
+
+class tagCMSellAuctionItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemIndex", c_ubyte), #物品在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ self.SubCmd = 0x13
+ 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 = 0x13
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSellAuctionItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMSellAuctionItem=tagCMSellAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellAuctionItem.Cmd,m_NAtagCMSellAuctionItem.SubCmd))] = m_NAtagCMSellAuctionItem
+
+
+#------------------------------------------------------
# B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState
class tagCMChangeTeamCheckState(Structure):
@@ -15146,6 +15896,70 @@
m_NAtagCMChangeTeamCheckState=tagCMChangeTeamCheckState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeTeamCheckState.Cmd,m_NAtagCMChangeTeamCheckState.SubCmd))] = m_NAtagCMChangeTeamCheckState
+
+
+#------------------------------------------------------
+# C1 06 跨服NPC对话 #tagCMCrossNPCTalk
+
+class tagCMCrossNPCTalk(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ("NPCID", c_int),
+ ("PosX", c_ushort),
+ ("PosY", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x06
+ self.ObjID = 0
+ self.NPCID = 0
+ self.PosX = 0
+ self.PosY = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossNPCTalk)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 06 跨服NPC对话 //tagCMCrossNPCTalk:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d,
+ NPCID:%d,
+ PosX:%d,
+ PosY:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID,
+ self.NPCID,
+ self.PosX,
+ self.PosY
+ )
+ return DumpString
+
+
+m_NAtagCMCrossNPCTalk=tagCMCrossNPCTalk()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossNPCTalk.Cmd,m_NAtagCMCrossNPCTalk.SubCmd))] = m_NAtagCMCrossNPCTalk
#------------------------------------------------------
@@ -15305,6 +16119,114 @@
#------------------------------------------------------
+# C1 08 跨服PK挑战机器人结算 #tagCMCrossRealmPKRobotOver
+
+class tagCMCrossRealmPKRobotOver(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsWin", c_ubyte), #是否获胜
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x08
+ self.IsWin = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossRealmPKRobotOver)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 08 跨服PK挑战机器人结算 //tagCMCrossRealmPKRobotOver:
+ Cmd:%s,
+ SubCmd:%s,
+ IsWin:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsWin
+ )
+ return DumpString
+
+
+m_NAtagCMCrossRealmPKRobotOver=tagCMCrossRealmPKRobotOver()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKRobotOver.Cmd,m_NAtagCMCrossRealmPKRobotOver.SubCmd))] = m_NAtagCMCrossRealmPKRobotOver
+
+
+#------------------------------------------------------
+# C1 05 进入跨服地图 #tagCMEnterCrossServer
+
+class tagCMEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DataMapID", c_int),
+ ("LineID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x05
+ 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 = 0xC1
+ self.SubCmd = 0x05
+ self.DataMapID = 0
+ self.LineID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 05 进入跨服地图 //tagCMEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s,
+ DataMapID:%d,
+ LineID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DataMapID,
+ self.LineID
+ )
+ return DumpString
+
+
+m_NAtagCMEnterCrossServer=tagCMEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEnterCrossServer.Cmd,m_NAtagCMEnterCrossServer.SubCmd))] = m_NAtagCMEnterCrossServer
+
+
+#------------------------------------------------------
# C1 04 主动退出跨服 #tagCMExitCrossRealm
class tagCMExitCrossRealm(Structure):
@@ -15349,4 +16271,4 @@
m_NAtagCMExitCrossRealm=tagCMExitCrossRealm()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
diff --git a/Tool/RobotTest/AI/AIFile/AILoginout.py b/Tool/RobotTest/AI/AIFile/AILoginout.py
index 8ab554e..3efbe20 100644
--- a/Tool/RobotTest/AI/AIFile/AILoginout.py
+++ b/Tool/RobotTest/AI/AIFile/AILoginout.py
@@ -440,14 +440,16 @@
if self.robot.GetPlayerInfo().GetPlayerLV() == 1:
- cmd = "OpenFunc 1"
- pack = tagCGMCMD()
- pack.Clear()
- pack.CmdLen = len(cmd)
- pack.Cmd = cmd
- self.robot.Send(pack)
+ #===================================================================
+ # cmd = "OpenFunc 1"
+ # pack = tagCGMCMD()
+ # pack.Clear()
+ # pack.CmdLen = len(cmd)
+ # pack.Cmd = cmd
+ # self.robot.Send(pack)
+ #===================================================================
- cmd = "imba %s"%random.randint(5, 300)
+ cmd = "imba %s"%random.randint(30, 300)
pack = tagCGMCMD()
pack.Clear()
pack.CmdLen = len(cmd)
diff --git a/Tool/RobotTest/Data/MapEventPoint.txt b/Tool/RobotTest/Data/MapEventPoint.txt
index fcca1e6..7e4d185 100644
--- a/Tool/RobotTest/Data/MapEventPoint.txt
+++ b/Tool/RobotTest/Data/MapEventPoint.txt
@@ -8,68 +8,68 @@
5 10010 10104008 1 缂ョ紙闀胯��
6 10010 10104011 1 缂ョ紙瀹椾富
7 10010 10104012 1 浜戞父閬撲汉 0 0
-8 10020 10201001 1 1 1 15 20 66 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2072/鍒嗛挓
-9 10020 10201002 1 1 9 18 22 67 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2340/鍒嗛挓
-10 10020 10201003 1 1 2 21 24 73 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3009/鍒嗛挓
-11 10020 10201004 1 1 3 24 27 85 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3840/鍒嗛挓
-12 10020 10201005 1 1 4 27 30 87 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 4830/鍒嗛挓
-13 10020 10202001 1 1 5 30 32 99 <color=#31cefbFF>浜岄樁钃濊锛� </color>134浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 6407/鍒嗛挓
+8 10090 10901001 1 1 1 15 20 66 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2072/鍒嗛挓
+9 10090 10901002 1 1 9 18 22 67 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2340/鍒嗛挓
+10 10090 10901003 1 1 2 21 24 73 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3009/鍒嗛挓
+11 10090 10901004 1 1 3 24 27 85 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3840/鍒嗛挓
+12 10090 10901005 1 1 4 27 30 87 <color=#31cefbFF>涓�闃惰摑瑁咃細 </color>698浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 4830/鍒嗛挓
+13 10090 10902001 1 1 5 30 32 99 <color=#31cefbFF>浜岄樁钃濊锛� </color>134浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 6407/鍒嗛挓
14 10020 10203001 0 1 5 0 0 0 0 0 0
-15 10030 10301001 1 1 1 32 41 117 <color=#31cefbFF>浜岄樁钃濊锛� </color>268浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 7854/鍒嗛挓
-16 10030 10301002 1 1 9 38 44 122 <color=#31cefbFF>浜岄樁钃濊锛� </color>537浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 9440/鍒嗛挓
-17 10030 10301003 1 1 2 41 47 125 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.12涓�/鍒嗛挓
-18 10030 10301004 1 1 3 44 50 128 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.35涓�/鍒嗛挓
-19 10030 10301005 1 1 4 47 52 129 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.57涓�/鍒嗛挓
-20 10030 10302001 1 1 5 50 55 142 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.86涓�/鍒嗛挓
+15 10120 11201001 1 1 1 32 41 117 <color=#31cefbFF>浜岄樁钃濊锛� </color>268浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 7854/鍒嗛挓
+16 10120 11201002 1 1 9 38 44 122 <color=#31cefbFF>浜岄樁钃濊锛� </color>537浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 9440/鍒嗛挓
+17 10120 11201003 1 1 2 41 47 125 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.12涓�/鍒嗛挓
+18 10120 11201004 1 1 3 44 50 128 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.35涓�/鍒嗛挓
+19 10120 11201005 1 1 4 47 52 129 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.57涓�/鍒嗛挓
+20 10120 11202001 1 1 5 50 55 142 <color=#31cefbFF>浜岄樁钃濊锛� </color>671浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.86涓�/鍒嗛挓
21 10030 10303001 0 1 5 0 0 0 0 0 0
-22 10040 10401001 1 1 1 55 70 269 <color=#31cefbFF>浜岄樁钃濊锛� </color>244浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 5.3涓�/鍒嗛挓
-23 10040 10401002 1 1 9 70 90 311 <color=#31cefbFF>浜岄樁钃濊锛� </color>256浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 9.01涓�/鍒嗛挓
-24 10040 10401003 1 1 2 80 100 356 <color=#31cefbFF>浜岄樁钃濊锛� </color>256浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 20.45涓�/鍒嗛挓
-25 10040 10401004 1 1 3 90 110 410 <color=#31cefbFF>涓夐樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>5浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 25.81涓�/鍒嗛挓
-26 10040 10401005 1 1 4 100 120 488 <color=#31cefbFF>涓夐樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>8浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 31.62涓�/鍒嗛挓
-27 10040 10402001 1 1 5 110 130 587 <color=#31cefbFF>涓夐樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>13浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 41.69涓�/鍒嗛挓
-28 10040 10403001 0 1 5 0 0 0 0 0 0
-29 10050 10501001 1 1 1 120 140 681 <color=#31cefbFF>涓夐樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>13浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 71.41涓�/鍒嗛挓
-30 10050 10501002 1 1 9 130 150 799 <color=#31cefbFF>涓夐樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.08鐧句竾/鍒嗛挓
-31 10050 10501003 1 1 2 140 160 886 <color=#31cefbFF>涓夐樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>25浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.26鐧句竾/鍒嗛挓
-32 10050 10501004 1 1 3 150 170 974 <color=#31cefbFF>鍥涢樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.56鐧句竾/鍒嗛挓
-33 10050 10501005 1 1 4 160 180 1080 <color=#31cefbFF>鍥涢樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.89鐧句竾/鍒嗛挓
-34 10050 10502001 1 1 5 170 190 1176 <color=#31cefbFF>鍥涢樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.58鐧句竾/鍒嗛挓
-35 10050 10503001 0 1 5 0 0 0 0 0 0
-36 10060 10601001 1 1 1 180 200 1313 <color=#31cefbFF>鍥涢樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3.92鐧句竾/鍒嗛挓
-37 10060 10601002 1 1 9 190 210 1503 <color=#31cefbFF>鍥涢樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 5.01鐧句竾/鍒嗛挓
-38 10060 10601003 1 1 2 200 220 1660 <color=#31cefbFF>浜旈樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 7.27鐧句竾/鍒嗛挓
-39 10060 10601004 1 1 3 210 230 1839 <color=#31cefbFF>浜旈樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 11.12鐧句竾/鍒嗛挓
-40 10060 10601005 1 1 4 220 240 2080 <color=#31cefbFF>浜旈樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 15.05鐧句竾/鍒嗛挓
-41 10060 10602001 1 1 5 230 250 2330 <color=#31cefbFF>浜旈樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 20.23鐧句竾/鍒嗛挓
-42 10060 10603001 0 1 5 0 0 0 0 0 0
-43 10070 10701001 1 1 1 240 260 2696 <color=#31cefbFF>浜旈樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 27.63鐧句竾/鍒嗛挓
-44 10070 10701002 1 1 2 250 270 3038 <color=#31cefbFF>鍏樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 31.99鐧句竾/鍒嗛挓
-45 10070 10701003 1 1 9 260 280 3388 <color=#31cefbFF>鍏樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 36.4鐧句竾/鍒嗛挓
-46 10070 10701004 1 1 3 270 290 3904 <color=#31cefbFF>鍏樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 43.95鐧句竾/鍒嗛挓
-47 10070 10701005 1 1 4 280 300 4455 <color=#31cefbFF>鍏樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 53.16鐧句竾/鍒嗛挓
-48 10070 10702001 1 1 5 290 310 5324 <color=#31cefbFF>鍏樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 65.27鐧句竾/鍒嗛挓
+22 10080 10801001 1 1 1 55 70 269 <color=#31cefbFF>浜岄樁钃濊锛� </color>244浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 5.3涓�/鍒嗛挓
+23 10080 10801002 1 1 9 70 90 311 <color=#31cefbFF>浜岄樁钃濊锛� </color>256浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 9.01涓�/鍒嗛挓
+24 10080 10801003 1 1 2 80 100 356 <color=#31cefbFF>浜岄樁钃濊锛� </color>256浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 20.45涓�/鍒嗛挓
+25 10080 10801004 1 1 3 90 110 410 <color=#31cefbFF>涓夐樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>5浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 25.81涓�/鍒嗛挓
+26 10080 10801005 1 1 4 100 120 488 <color=#31cefbFF>涓夐樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>8浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 31.62涓�/鍒嗛挓
+27 10080 10802001 1 1 5 110 130 587 <color=#31cefbFF>涓夐樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>13浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 41.69涓�/鍒嗛挓
+28 10080 10403001 0 1 5 0 0 0 0 0 0
+29 10020 10201001 1 1 1 120 140 681 <color=#31cefbFF>涓夐樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>13浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 71.41涓�/鍒嗛挓
+30 10020 10201002 1 1 9 130 150 799 <color=#31cefbFF>涓夐樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.08鐧句竾/鍒嗛挓
+31 10020 10201003 1 1 2 140 160 886 <color=#31cefbFF>涓夐樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>涓夐樁绱锛� </color>25浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.26鐧句竾/鍒嗛挓
+32 10020 10201004 1 1 3 150 170 974 <color=#31cefbFF>鍥涢樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.56鐧句竾/鍒嗛挓
+33 10020 10201005 1 1 4 160 180 1080 <color=#31cefbFF>鍥涢樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.89鐧句竾/鍒嗛挓
+34 10020 10202001 1 1 5 170 190 1176 <color=#31cefbFF>鍥涢樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.58鐧句竾/鍒嗛挓
+35 10020 10503001 0 1 5 0 0 0 0 0 0
+36 10030 10301001 1 1 1 180 200 1313 <color=#31cefbFF>鍥涢樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3.92鐧句竾/鍒嗛挓
+37 10030 10301002 1 1 9 190 210 1503 <color=#31cefbFF>鍥涢樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>鍥涢樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 5.01鐧句竾/鍒嗛挓
+38 10030 10301003 1 1 2 200 220 1660 <color=#31cefbFF>浜旈樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 7.27鐧句竾/鍒嗛挓
+39 10030 10301004 1 1 3 210 230 1839 <color=#31cefbFF>浜旈樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 11.12鐧句竾/鍒嗛挓
+40 10030 10301005 1 1 4 220 240 2080 <color=#31cefbFF>浜旈樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 15.05鐧句竾/鍒嗛挓
+41 10030 10302001 1 1 5 230 250 2330 <color=#31cefbFF>浜旈樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 20.23鐧句竾/鍒嗛挓
+42 10030 10603001 0 1 5 0 0 0 0 0 0
+43 10040 10401001 1 1 1 240 260 2696 <color=#31cefbFF>浜旈樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>浜旈樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 27.63鐧句竾/鍒嗛挓
+44 10040 10401002 1 1 2 250 270 3038 <color=#31cefbFF>鍏樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 31.99鐧句竾/鍒嗛挓
+45 10040 10401003 1 1 9 260 280 3388 <color=#31cefbFF>鍏樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 36.4鐧句竾/鍒嗛挓
+46 10040 10401004 1 1 3 270 290 3904 <color=#31cefbFF>鍏樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 43.95鐧句竾/鍒嗛挓
+47 10040 10401005 1 1 4 280 300 4455 <color=#31cefbFF>鍏樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 53.16鐧句竾/鍒嗛挓
+48 10040 10402001 1 1 5 290 310 5324 <color=#31cefbFF>鍏樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 65.27鐧句竾/鍒嗛挓
49 10070 10703001 0 1 5 0 0 0 0 0 0
-50 10080 10801001 1 1 1 300 320 5740 <color=#31cefbFF>涓冮樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 87.32鐧句竾/鍒嗛挓
-51 10080 10801002 1 1 9 310 330 6177 <color=#31cefbFF>涓冮樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.01浜�/鍒嗛挓
-52 10080 10801003 1 1 2 320 340 6697 <color=#31cefbFF>涓冮樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.17浜�/鍒嗛挓
-53 10080 10801004 1 1 3 330 350 8223 <color=#31cefbFF>涓冮樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.37浜�/鍒嗛挓
-54 10080 10801005 1 1 4 340 360 12124 <color=#31cefbFF>涓冮樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.57浜�/鍒嗛挓
-55 10080 10802001 1 1 5 345 365 14548 <color=#31cefbFF>涓冮樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>30浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.63浜�/鍒嗛挓
+50 10050 10501001 1 1 1 300 320 5740 <color=#31cefbFF>涓冮樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 87.32鐧句竾/鍒嗛挓
+51 10050 10501002 1 1 9 310 330 6177 <color=#31cefbFF>涓冮樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.01浜�/鍒嗛挓
+52 10050 10501003 1 1 2 320 340 6697 <color=#31cefbFF>涓冮樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.17浜�/鍒嗛挓
+53 10050 10501004 1 1 3 330 350 8223 <color=#31cefbFF>涓冮樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.37浜�/鍒嗛挓
+54 10050 10501005 1 1 4 340 360 12124 <color=#31cefbFF>涓冮樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.57浜�/鍒嗛挓
+55 10050 10502001 1 1 5 345 365 14548 <color=#31cefbFF>涓冮樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>涓冮樁绱锛� </color>30浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.63浜�/鍒嗛挓
56 10080 10803001 0 1 5 0 0 0 0 0 0
-57 10090 10901001 1 1 1 350 370 12510 <color=#31cefbFF>鍏樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.95浜�/鍒嗛挓
-58 10090 10901002 1 1 9 360 380 13052 <color=#31cefbFF>鍏樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.13浜�/鍒嗛挓
-59 10090 10901003 1 1 2 370 390 14110 <color=#31cefbFF>鍏樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.35浜�/鍒嗛挓
-60 10090 10901004 1 1 3 380 400 14873 <color=#31cefbFF>鍏樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.59浜�/鍒嗛挓
-61 10090 10901005 1 1 4 390 410 16232 <color=#31cefbFF>鍏樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.84浜�/鍒嗛挓
-62 10090 10902001 1 1 5 395 415 18394 <color=#31cefbFF>鍏樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>30浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.96浜�/鍒嗛挓
+57 10060 10601001 1 1 1 350 370 12510 <color=#31cefbFF>鍏樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 1.95浜�/鍒嗛挓
+58 10060 10601002 1 1 9 360 380 13052 <color=#31cefbFF>鍏樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.13浜�/鍒嗛挓
+59 10060 10601003 1 1 2 370 390 14110 <color=#31cefbFF>鍏樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.35浜�/鍒嗛挓
+60 10060 10601004 1 1 3 380 400 14873 <color=#31cefbFF>鍏樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.59浜�/鍒嗛挓
+61 10060 10601005 1 1 4 390 410 16232 <color=#31cefbFF>鍏樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.84浜�/鍒嗛挓
+62 10060 10602001 1 1 5 395 415 18394 <color=#31cefbFF>鍏樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>鍏樁绱锛� </color>30浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 2.96浜�/鍒嗛挓
63 10090 10903001 0 1 5 0 0 0 0 0 0
-64 10100 11001001 1 1 1 400 420 17343 <color=#31cefbFF>涔濋樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3.8浜�/鍒嗛挓
-65 10100 11001002 1 1 9 410 430 18058 <color=#31cefbFF>涔濋樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 4.26浜�/鍒嗛挓
-66 10100 11001003 1 1 2 420 440 18932 <color=#31cefbFF>涔濋樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 4.76浜�/鍒嗛挓
-67 10100 11001004 1 1 3 430 450 19857 <color=#31cefbFF>涔濋樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 5.55浜�/鍒嗛挓
-68 10100 11001005 1 1 4 440 460 21459 <color=#31cefbFF>涔濋樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 6.05浜�/鍒嗛挓
-69 10100 11002001 1 1 5 445 465 24349 <color=#31cefbFF>涔濋樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>30浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 6.3浜�/鍒嗛挓
+64 10070 10701001 1 1 1 400 420 17343 <color=#31cefbFF>涔濋樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 3.8浜�/鍒嗛挓
+65 10070 10701002 1 1 9 410 430 18058 <color=#31cefbFF>涔濋樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 4.26浜�/鍒嗛挓
+66 10070 10701003 1 1 2 420 440 18932 <color=#31cefbFF>涔濋樁钃濊锛� </color>208浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>24浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 4.76浜�/鍒嗛挓
+67 10070 10701004 1 1 3 430 450 19857 <color=#31cefbFF>涔濋樁钃濊锛� </color>242浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>26浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 5.55浜�/鍒嗛挓
+68 10070 10701005 1 1 4 440 460 21459 <color=#31cefbFF>涔濋樁钃濊锛� </color>363浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>28浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 6.05浜�/鍒嗛挓
+69 10070 10702001 1 1 5 445 465 24349 <color=#31cefbFF>涔濋樁钃濊锛� </color>416浠�/澶� <color=#ec4bf6FF>涔濋樁绱锛� </color>30浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 6.3浜�/鍒嗛挓
70 10100 11003001 0 1 5 0 0 0 0 0 0
71 10110 11101001 1 1 1 450 470 22783 <color=#31cefbFF>鍗侀樁钃濊锛� </color>104浠�/澶� <color=#ec4bf6FF>鍗侀樁绱锛� </color>20浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 8.17浜�/鍒嗛挓
72 10110 11101002 1 1 9 460 480 23635 <color=#31cefbFF>鍗侀樁钃濊锛� </color>113浠�/澶� <color=#ec4bf6FF>鍗侀樁绱锛� </color>22浠�/澶� <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 9.09浜�/鍒嗛挓
@@ -198,7 +198,7 @@
195 21310 20403006 0 1 5 530 550 0 0 0 0
196 21310 20403007 0 1 5 540 560 0 0 0 0
197 31360 30301004 1 1 5 390 410 22079 <color=#35e122ff>鏍囧噯缁忛獙锛�</color> 4.6浜�/鍒嗛挓
-198 31360 30303017 1 0 5 390 390 75896
+198 31360 30303017 1 0 5 390 390 75896 g
199 31360 30303018 1 0 5 420 420 86179
200 31360 30303019 1 0 5 450 450 105152
201 31360 30303020 1 0 5 500 500 115919
diff --git a/Tool/RobotTest/DataReader/MapEventPointReader.py b/Tool/RobotTest/DataReader/MapEventPointReader.py
index 6975fbf..ab4f8cb 100644
--- a/Tool/RobotTest/DataReader/MapEventPointReader.py
+++ b/Tool/RobotTest/DataReader/MapEventPointReader.py
@@ -17,33 +17,19 @@
class MapEventPoint():
def __init__(self):
- #int int int int int int int int string string string
- self.Key = 0
self.MapID = 0
self.NPCID = 0
- self.IsShowInfo = 0
- self.Colour = 0
self.LowLV = 0
self.HighestLV = 0
self.Defense = 0
- self.Drop1 = ""
- self.Drop2 = ""
- self.EXP = ""
- self.count = 12
def ReadFromList(self, curList):
- self.Key = CommFunc.ToIntDef(curList[0])
self.MapID = CommFunc.ToIntDef(curList[1])
self.NPCID = CommFunc.ToIntDef(curList[2])
- self.IsShowInfo = CommFunc.ToIntDef(curList[3])
- self.Colour = CommFunc.ToIntDef(curList[4])
- self.LowLV = CommFunc.ToIntDef(curList[5])
- self.HighestLV = CommFunc.ToIntDef(curList[6])
- self.Defense = CommFunc.ToIntDef(curList[7])
- self.Drop1 = CommFunc.ToIntDef(curList[8])
- self.Drop2 = CommFunc.ToIntDef(curList[9])
- self.EXP = CommFunc.ToIntDef(curList[10])
+ self.LowLV = CommFunc.ToIntDef(curList[7])
+ self.HighestLV = CommFunc.ToIntDef(curList[8])
+ self.Defense = CommFunc.ToIntDef(curList[9])
return
@@ -101,6 +87,7 @@
classObj.ReadFromList(lineList)
self.__NPCPoint[classObj.NPCID] = classObj
+
return
@@ -121,7 +108,6 @@
if maxlv < point.LowLV:
maxlv = point.LowLV
pointNPCID = point.NPCID
-
npcPoint = self.__NPCPoint.get(pointNPCID, None)
if not npcPoint:
diff --git a/Tool/RobotTest/Main.py b/Tool/RobotTest/Main.py
index 622060b..add221e 100644
--- a/Tool/RobotTest/Main.py
+++ b/Tool/RobotTest/Main.py
@@ -10,7 +10,7 @@
# @note:
#
#---------------------------------------------------------------------
-HaveDEBUG = False
+HaveDEBUG = True
#初始化Log模块
diff --git a/Tool/RobotTest/Protocol/PacketsReceived.py b/Tool/RobotTest/Protocol/PacketsReceived.py
index d1edd16..4a6de90 100644
--- a/Tool/RobotTest/Protocol/PacketsReceived.py
+++ b/Tool/RobotTest/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):
@@ -7061,67 +7061,36 @@
#03 09 主角登录时候的简短信息#tagPlayerLoginInfo
class tagLoginInfoEquip(Structure):
- ItemPlace = 0 #(BYTE ItemPlace)
- ItemID = 0 #(DWORD ItemID)
- IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
- UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//size = UserDataLen
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.ItemPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.ItemPlace = 0
self.ItemID = 0
- self.IsSuite = 0
- self.UserDataLen = 0
- self.UserData = ""
return
def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 1
- length += 4
- length += len(self.UserData)
-
- return length
+ return sizeof(tagLoginInfoEquip)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.ItemPlace)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteBYTE(data, self.IsSuite)
- data = CommFunc.WriteDWORD(data, self.UserDataLen)
- data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- ItemPlace:%d,
- ItemID:%d,
- IsSuite:%d,
- UserDataLen:%d,
- UserData:%s
+ DumpString = '''//03 09 主角登录时候的简短信息//tagPlayerLoginInfo:
+ ItemID:%d
'''\
%(
- self.ItemPlace,
- self.ItemID,
- self.IsSuite,
- self.UserDataLen,
- self.UserData
+ self.ItemID
)
return DumpString
@@ -8054,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):
@@ -8593,67 +8562,36 @@
#04 34 周围玩家出现合并封包#tagAreaPlayerAppearEx
class tagEquipInfo(Structure):
- Place = 0 #(BYTE Place)//装备位置
- ItemID = 0 #(DWORD ItemID)//物品ID
- IsSuite = 0 #(BYTE IsSuite)//是否已经套装化
- UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)// 附加数据
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int), #物品ID
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.Place,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.Place = 0
self.ItemID = 0
- self.IsSuite = 0
- self.UserDataLen = 0
- self.UserData = ""
return
def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 1
- length += 4
- length += len(self.UserData)
-
- return length
+ return sizeof(tagEquipInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.Place)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteBYTE(data, self.IsSuite)
- data = CommFunc.WriteDWORD(data, self.UserDataLen)
- data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- Place:%d,
- ItemID:%d,
- IsSuite:%d,
- UserDataLen:%d,
- UserData:%s
+ DumpString = '''//04 34 周围玩家出现合并封包//tagAreaPlayerAppearEx:
+ ItemID:%d
'''\
%(
- self.Place,
- self.ItemID,
- self.IsSuite,
- self.UserDataLen,
- self.UserData
+ self.ItemID
)
return DumpString
@@ -8724,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
@@ -10132,7 +10070,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位
+ ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位
]
def __init__(self):
@@ -10180,7 +10118,7 @@
#------------------------------------------------------
-#04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
+#04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
class tagPlayerFamilyNameRefresh(Structure):
Head = tagHead()
@@ -10258,7 +10196,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):
@@ -13602,7 +13540,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):
@@ -14020,7 +13958,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
]
@@ -15108,7 +15046,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
]
@@ -20627,7 +20565,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)//扩展属性
@@ -20791,7 +20729,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
@@ -21968,7 +21906,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):
@@ -22299,7 +22237,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)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
@@ -23765,7 +23703,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):
@@ -24365,7 +24303,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
@@ -27054,8 +26992,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):
@@ -27189,7 +27127,7 @@
("SubCmd", c_ubyte),
("FormID", c_int), # 挂单ID
("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
- ("LefGold", c_int), #该单的剩余购买元宝组数
+ ("LefGold", c_int), #该单的剩余购买元宝组数
("LeftTime", c_ushort), #该单的剩余在架时间
]
@@ -27478,7 +27416,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("LabelID", c_int), # 删除标签
+ ("LabelID", c_int), # 删除标签
]
def __init__(self):
@@ -28719,7 +28657,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):
@@ -28981,7 +28919,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):
@@ -29108,7 +29046,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):
@@ -29281,7 +29219,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)//出售价格
@@ -29668,4 +29606,4 @@
m_NAtagGMCmdAnswer=tagGMCmdAnswer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
diff --git a/Tool/RobotTest/Protocol/PacketsReceivedPY.py b/Tool/RobotTest/Protocol/PacketsReceivedPY.py
index 49baa51..23de93b 100644
--- a/Tool/RobotTest/Protocol/PacketsReceivedPY.py
+++ b/Tool/RobotTest/Protocol/PacketsReceivedPY.py
@@ -196,40 +196,60 @@
# A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
class tagGCFBLineInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("FBLineID", c_ubyte), # 功能线路ID
- ("PlayerCnt", c_ushort), # 线路当前玩家数
- ]
+ FBLineID = 0 #(BYTE FBLineID)// 功能线路ID
+ PlayerCnt = 0 #(WORD PlayerCnt)// 线路当前玩家数
+ ExtraStrLen = 0 #(WORD ExtraStrLen)// 长度
+ ExtraStr = "" #(String ExtraStr)// 额外信息
+ data = None
def __init__(self):
self.Clear()
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ self.FBLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlayerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExtraStrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExtraStr,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraStrLen)
+ return _pos
def Clear(self):
self.FBLineID = 0
self.PlayerCnt = 0
+ self.ExtraStrLen = 0
+ self.ExtraStr = ""
return
def GetLength(self):
- return sizeof(tagGCFBLineInfo)
+ length = 0
+ length += 1
+ length += 2
+ length += 2
+ length += len(self.ExtraStr)
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.FBLineID)
+ data = CommFunc.WriteWORD(data, self.PlayerCnt)
+ data = CommFunc.WriteWORD(data, self.ExtraStrLen)
+ data = CommFunc.WriteString(data, self.ExtraStrLen, self.ExtraStr)
+ return data
def OutputString(self):
- DumpString = '''// A0 07 副本地图功能线路人数 //tagGCFBLinePlayerCnt:
+ DumpString = '''
FBLineID:%d,
- PlayerCnt:%d
+ PlayerCnt:%d,
+ ExtraStrLen:%d,
+ ExtraStr:%s
'''\
%(
self.FBLineID,
- self.PlayerCnt
+ self.PlayerCnt,
+ self.ExtraStrLen,
+ self.ExtraStr
)
return DumpString
@@ -809,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):
@@ -876,6 +896,58 @@
m_NAtagUniversalGameRecInfo=tagUniversalGameRecInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUniversalGameRecInfo.Head.Cmd,m_NAtagUniversalGameRecInfo.Head.SubCmd))] = m_NAtagUniversalGameRecInfo
+
+
+#------------------------------------------------------
+# A4 0C 多仙盟boss活动信息 #tagGCAllFamilyBossInfo
+
+class tagGCAllFamilyBossInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsEnd", c_ubyte), # 是否已结束
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0C
+ 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 = 0x0C
+ self.IsEnd = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCAllFamilyBossInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A4 0C 多仙盟boss活动信息 //tagGCAllFamilyBossInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ IsEnd:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsEnd
+ )
+ return DumpString
+
+
+m_NAtagGCAllFamilyBossInfo=tagGCAllFamilyBossInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAllFamilyBossInfo.Cmd,m_NAtagGCAllFamilyBossInfo.SubCmd))] = m_NAtagGCAllFamilyBossInfo
#------------------------------------------------------
@@ -1061,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):
@@ -2909,8 +2981,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):
@@ -3299,21 +3371,17 @@
#------------------------------------------------------
-#A9 05 天梯竞技场每日奖励信息#tagGCHighLadderRewardInfo
+# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
-class tagGCHighLadderRewardInfo(Structure):
+class tagGCNotifyEquipClassEquip(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("hadGot", c_ubyte), #是否已领取
- ("Order", c_ushort), #奖励排名
+ ("ItemID", c_int),
+ ("Star", c_ubyte),
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0x05
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -3322,36 +3390,168 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA9
- self.SubCmd = 0x05
- self.hadGot = 0
- self.Order = 0
+ self.ItemID = 0
+ self.Star = 0
return
def GetLength(self):
- return sizeof(tagGCHighLadderRewardInfo)
+ return sizeof(tagGCNotifyEquipClassEquip)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''//A9 05 天梯竞技场每日奖励信息//tagGCHighLadderRewardInfo:
- Cmd:%s,
- SubCmd:%s,
- hadGot:%d,
- Order:%d
+ DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo:
+ ItemID:%d,
+ Star:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.hadGot,
- self.Order
+ self.ItemID,
+ self.Star
)
return DumpString
-m_NAtagGCHighLadderRewardInfo=tagGCHighLadderRewardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHighLadderRewardInfo.Cmd,m_NAtagGCHighLadderRewardInfo.SubCmd))] = m_NAtagGCHighLadderRewardInfo
+class tagGCNotifyEquipDetailInfo(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ ItemID = 0 #(DWORD ItemID)
+ Star = 0 #(BYTE Star)//星级
+ PlusLV = 0 #(WORD PlusLV)//强化等级
+ EvolveLV = 0 #(BYTE EvolveLV)//进化等级
+ WashLV = 0 #(BYTE WashLV)//洗练等级
+ WashValueCount = 0 #(BYTE WashValueCount)
+ WashValueList = list() #(vector<WORD> WashValueList)//洗练值
+ StoneIDCount = 0 #(BYTE StoneIDCount)
+ StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石
+ ClassEquipCount = 0 #(BYTE ClassEquipCount)
+ ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ 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)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.WashValueCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.WashValueList.append(value)
+ self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.StoneIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.StoneIDList.append(value)
+ self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ClassEquipCount):
+ temClassEquipList = tagGCNotifyEquipClassEquip()
+ _pos = temClassEquipList.ReadData(_lpData, _pos)
+ self.ClassEquipList.append(temClassEquipList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ self.ItemGUID = ""
+ self.ItemID = 0
+ self.Star = 0
+ self.PlusLV = 0
+ self.EvolveLV = 0
+ self.WashLV = 0
+ self.WashValueCount = 0
+ self.WashValueList = list()
+ self.StoneIDCount = 0
+ self.StoneIDList = list()
+ self.ClassEquipCount = 0
+ self.ClassEquipList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+ length += 4
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 1
+ length += 2 * self.WashValueCount
+ length += 1
+ length += 4 * self.StoneIDCount
+ length += 1
+ for i in range(self.ClassEquipCount):
+ length += self.ClassEquipList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteBYTE(data, self.Star)
+ data = CommFunc.WriteWORD(data, self.PlusLV)
+ data = CommFunc.WriteBYTE(data, self.EvolveLV)
+ data = CommFunc.WriteBYTE(data, self.WashLV)
+ data = CommFunc.WriteBYTE(data, self.WashValueCount)
+ for i in range(self.WashValueCount):
+ data = CommFunc.WriteWORD(data, self.WashValueList[i])
+ data = CommFunc.WriteBYTE(data, self.StoneIDCount)
+ for i in range(self.StoneIDCount):
+ data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
+ data = CommFunc.WriteBYTE(data, self.ClassEquipCount)
+ for i in range(self.ClassEquipCount):
+ data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s,
+ ItemID:%d,
+ Star:%d,
+ PlusLV:%d,
+ EvolveLV:%d,
+ WashLV:%d,
+ WashValueCount:%d,
+ WashValueList:%s,
+ StoneIDCount:%d,
+ StoneIDList:%s,
+ ClassEquipCount:%d,
+ ClassEquipList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID,
+ self.ItemID,
+ self.Star,
+ self.PlusLV,
+ self.EvolveLV,
+ self.WashLV,
+ self.WashValueCount,
+ "...",
+ self.StoneIDCount,
+ "...",
+ self.ClassEquipCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
#------------------------------------------------------
@@ -3747,7 +3947,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -3988,7 +4188,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):
@@ -4113,124 +4313,6 @@
m_NAtagGCRecommendFriendsInfo=tagGCRecommendFriendsInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRecommendFriendsInfo.Head.Cmd,m_NAtagGCRecommendFriendsInfo.Head.SubCmd))] = m_NAtagGCRecommendFriendsInfo
-
-
-#------------------------------------------------------
-# A9 07 定时商店刷新倒计时 #tagGCShopRefreshTimeList
-
-class tagGCShopRefreshTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", c_int), # 商店ID
- ("RemainSecond", c_int), # 多少秒后刷新
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA9
- 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 = 0xA9
- self.SubCmd = 0x07
- self.ShopID = 0
- self.RemainSecond = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCShopRefreshTime)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 07 定时商店刷新倒计时 //tagGCShopRefreshTimeList:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d,
- RemainSecond:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID,
- self.RemainSecond
- )
- return DumpString
-
-
-class tagGCShopRefreshTimeList(Structure):
- Head = tagHead()
- ShopCnt = 0 #(BYTE ShopCnt)//商店信息个数
- ShopTimeInfoList = list() #(vector<tagGCShopRefreshTime> ShopTimeInfoList)//商店信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x07
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ShopCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ShopCnt):
- temShopTimeInfoList = tagGCShopRefreshTime()
- _pos = temShopTimeInfoList.ReadData(_lpData, _pos)
- self.ShopTimeInfoList.append(temShopTimeInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x07
- self.ShopCnt = 0
- self.ShopTimeInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.ShopCnt):
- length += self.ShopTimeInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ShopCnt)
- for i in range(self.ShopCnt):
- data = CommFunc.WriteString(data, self.ShopTimeInfoList[i].GetLength(), self.ShopTimeInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ShopCnt:%d,
- ShopTimeInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ShopCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCShopRefreshTimeList=tagGCShopRefreshTimeList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCShopRefreshTimeList.Head.Cmd,m_NAtagGCShopRefreshTimeList.Head.SubCmd))] = m_NAtagGCShopRefreshTimeList
#------------------------------------------------------
@@ -4695,6 +4777,151 @@
#------------------------------------------------------
+# AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
+
+class tagGCFeastRedPacketDay(Structure):
+ RedPacketCount = 0 #(BYTE RedPacketCount)
+ RedPacketIDList = list() #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RedPacketCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.RedPacketIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.RedPacketCount = 0
+ self.RedPacketIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.RedPacketCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.RedPacketCount)
+ for i in range(self.RedPacketCount):
+ data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ RedPacketCount:%d,
+ RedPacketIDList:%s
+ '''\
+ %(
+ self.RedPacketCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagGCFeastRedPacketInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
+ RedPacketDays = 0 #(BYTE RedPacketDays)
+ RedPacketDayList = list() #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x11
+ 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RedPacketDays):
+ temRedPacketDayList = tagGCFeastRedPacketDay()
+ _pos = temRedPacketDayList.ReadData(_lpData, _pos)
+ self.RedPacketDayList.append(temRedPacketDayList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x11
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.ResetType = 0
+ self.RedPacketDays = 0
+ self.RedPacketDayList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.RedPacketDays):
+ length += self.RedPacketDayList[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.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteBYTE(data, self.RedPacketDays)
+ for i in range(self.RedPacketDays):
+ data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ ResetType:%d,
+ RedPacketDays:%d,
+ RedPacketDayList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.ResetType,
+ self.RedPacketDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
+
+
+#------------------------------------------------------
# AC 02 通知仙魔之争信息 #tagGCXMZZInfo
class tagGCXMZZInfo(Structure):
@@ -4879,171 +5106,55 @@
#------------------------------------------------------
-# AC 01 通知领地争夺占领情况 #tagGCManorWarInfo
+# AC 07 骑宠Boss信息 #tagGCHorsePetBossInfo
-class tagGCManorInfo(Structure):
- Head = tagHead()
- MapID = 0 #(DWORD MapID)// 领地地图id
- FamilyID = 0 #(DWORD FamilyID)// 占领战盟id
- FNameLen = 0 #(BYTE FNameLen)// 战盟名字长度
- FamilyName = "" #(String FamilyName)// 战盟名 size = FNameLen
- LNameLen = 0 #(BYTE LNameLen)// 盟主名字长度
- LeaderName = "" #(String LeaderName)// 盟主名 size = LNameLen
- OccupyDays = 0 #(WORD OccupyDays)// 连续占领天数
- LastFamilyID = 0 #(DWORD LastFamilyID)// 上次占领的战盟id
- data = None
+class tagGCHorsePetBossInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsEnd", c_int), # 是否已结束(按位代表对应线路是否结束)
+ ]
def __init__(self):
self.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
+ self.Cmd = 0xAC
+ self.SubCmd = 0x07
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FNameLen)
- self.LNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LNameLen)
- self.OccupyDays,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LastFamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
- self.MapID = 0
- self.FamilyID = 0
- self.FNameLen = 0
- self.FamilyName = ""
- self.LNameLen = 0
- self.LeaderName = ""
- self.OccupyDays = 0
- self.LastFamilyID = 0
+ self.Cmd = 0xAC
+ self.SubCmd = 0x07
+ self.IsEnd = 0
return
def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 4
- length += 1
- length += len(self.FamilyName)
- length += 1
- length += len(self.LeaderName)
- length += 2
- length += 4
-
- return length
+ return sizeof(tagGCHorsePetBossInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteDWORD(data, self.FamilyID)
- data = CommFunc.WriteBYTE(data, self.FNameLen)
- data = CommFunc.WriteString(data, self.FNameLen, self.FamilyName)
- data = CommFunc.WriteBYTE(data, self.LNameLen)
- data = CommFunc.WriteString(data, self.LNameLen, self.LeaderName)
- data = CommFunc.WriteWORD(data, self.OccupyDays)
- data = CommFunc.WriteDWORD(data, self.LastFamilyID)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- Head:%s,
- MapID:%d,
- FamilyID:%d,
- FNameLen:%d,
- FamilyName:%s,
- LNameLen:%d,
- LeaderName:%s,
- OccupyDays:%d,
- LastFamilyID:%d
+ DumpString = '''// AC 07 骑宠Boss信息 //tagGCHorsePetBossInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ IsEnd:%d
'''\
%(
- self.Head.OutputString(),
- self.MapID,
- self.FamilyID,
- self.FNameLen,
- self.FamilyName,
- self.LNameLen,
- self.LeaderName,
- self.OccupyDays,
- self.LastFamilyID
+ self.Cmd,
+ self.SubCmd,
+ self.IsEnd
)
return DumpString
-class tagGCManorWarInfo(Structure):
- Head = tagHead()
- ManorCnt = 0 #(BYTE ManorCnt)//领地个数
- ManorInfoList = list() #(vector<tagGCManorInfo> ManorInfoList)//领地信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ManorCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ManorCnt):
- temManorInfoList = tagGCManorInfo()
- _pos = temManorInfoList.ReadData(_lpData, _pos)
- self.ManorInfoList.append(temManorInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x01
- self.ManorCnt = 0
- self.ManorInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.ManorCnt):
- length += self.ManorInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ManorCnt)
- for i in range(self.ManorCnt):
- data = CommFunc.WriteString(data, self.ManorInfoList[i].GetLength(), self.ManorInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ManorCnt:%d,
- ManorInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ManorCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCManorWarInfo=tagGCManorWarInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCManorWarInfo.Head.Cmd,m_NAtagGCManorWarInfo.Head.SubCmd))] = m_NAtagGCManorWarInfo
+m_NAtagGCHorsePetBossInfo=tagGCHorsePetBossInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCHorsePetBossInfo.Cmd,m_NAtagGCHorsePetBossInfo.SubCmd))] = m_NAtagGCHorsePetBossInfo
#------------------------------------------------------
@@ -5274,6 +5385,91 @@
#------------------------------------------------------
+# AC 0B 新仙界盛典活动信息 #tagGCNewFairyCeremonyInfo
+
+class tagGCNewFairyCeremonyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ WorldLV = 0 #(WORD WorldLV)// 世界等级
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x0B
+ 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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAC
+ self.Head.SubCmd = 0x0B
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.WorldLV = 0
+ self.LimitLV = 0
+ self.ResetType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 2
+ length += 1
+
+ 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.WriteWORD(data, self.WorldLV)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ WorldLV:%d,
+ LimitLV:%d,
+ ResetType:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.WorldLV,
+ self.LimitLV,
+ self.ResetType
+ )
+ return DumpString
+
+
+m_NAtagGCNewFairyCeremonyInfo=tagGCNewFairyCeremonyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNewFairyCeremonyInfo.Head.Cmd,m_NAtagGCNewFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCNewFairyCeremonyInfo
+
+
+#------------------------------------------------------
# AC 05 红包删除 #tagGCRedPacketDel
class tagGCRedPacketDel(Structure):
@@ -5426,132 +5622,6 @@
#------------------------------------------------------
-# AD 01 特惠活动信息 #tagGCTeHuiActivityInfoList
-
-class tagGCTeHuiActivityInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActivityType", c_ubyte), # 活动类型
- ("ActivityValue", c_int), # 活动值
- ("StartDate", c_int), # 开始时间time
- ("EndDate", c_int), # 结束时间time
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAD
- 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 = 0xAD
- self.SubCmd = 0x01
- self.ActivityType = 0
- self.ActivityValue = 0
- self.StartDate = 0
- self.EndDate = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCTeHuiActivityInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AD 01 特惠活动信息 //tagGCTeHuiActivityInfoList:
- Cmd:%s,
- SubCmd:%s,
- ActivityType:%d,
- ActivityValue:%d,
- StartDate:%d,
- EndDate:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActivityType,
- self.ActivityValue,
- self.StartDate,
- self.EndDate
- )
- return DumpString
-
-
-class tagGCTeHuiActivityInfoList(Structure):
- Head = tagHead()
- ActivityCount = 0 #(BYTE ActivityCount)//活动信息个数
- ActivityInfoList = list() #(vector<tagGCTeHuiActivityInfo> ActivityInfoList)//活动信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAD
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActivityCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ActivityCount):
- temActivityInfoList = tagGCTeHuiActivityInfo()
- _pos = temActivityInfoList.ReadData(_lpData, _pos)
- self.ActivityInfoList.append(temActivityInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAD
- self.Head.SubCmd = 0x01
- self.ActivityCount = 0
- self.ActivityInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.ActivityCount):
- length += self.ActivityInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActivityCount)
- for i in range(self.ActivityCount):
- data = CommFunc.WriteString(data, self.ActivityInfoList[i].GetLength(), self.ActivityInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActivityCount:%d,
- ActivityInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActivityCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCTeHuiActivityInfoList=tagGCTeHuiActivityInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeHuiActivityInfoList.Head.Cmd,m_NAtagGCTeHuiActivityInfoList.Head.SubCmd))] = m_NAtagGCTeHuiActivityInfoList
-
-
-#------------------------------------------------------
# AE 05 镖车开始时间 #tagGCTruckStartTime
class tagGCTruckStartTime(Structure):
@@ -5668,7 +5738,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):
@@ -5881,6 +5951,7 @@
RealmLV = 0 #(WORD RealmLV)//境界
OnlineType = 0 #(BYTE OnlineType)//在线状态, 0 不在线 1在线
IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍
+ ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID
data = None
def __init__(self):
@@ -5899,6 +5970,7 @@
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -5913,6 +5985,7 @@
self.RealmLV = 0
self.OnlineType = 0
self.IsInTeam = 0
+ self.ServerGroupID = 0
return
def GetLength(self):
@@ -5925,6 +5998,7 @@
length += 2
length += 1
length += 1
+ length += 4
return length
@@ -5938,6 +6012,7 @@
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteBYTE(data, self.OnlineType)
data = CommFunc.WriteBYTE(data, self.IsInTeam)
+ data = CommFunc.WriteDWORD(data, self.ServerGroupID)
return data
def OutputString(self):
@@ -5949,7 +6024,8 @@
LV:%d,
RealmLV:%d,
OnlineType:%d,
- IsInTeam:%d
+ IsInTeam:%d,
+ ServerGroupID:%d
'''\
%(
self.Head.OutputString(),
@@ -5959,7 +6035,8 @@
self.LV,
self.RealmLV,
self.OnlineType,
- self.IsInTeam
+ self.IsInTeam,
+ self.ServerGroupID
)
return DumpString
@@ -6410,7 +6487,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
("Value", c_int),
]
@@ -6466,7 +6543,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)
@@ -6589,6 +6666,1532 @@
m_NAtagGCVoiceChat=tagGCVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
+
+
+#------------------------------------------------------
+# B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
+
+class tagGCAddAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ ItemID = 0 #(DWORD ItemID)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.ItemGUID,
+ self.ItemID
+ )
+ return DumpString
+
+
+class tagGCAddAuctionItemInfo(Structure):
+ Head = tagHead()
+ AddCount = 0 #(BYTE AddCount)
+ AddAuctionItemList = list() #(vector<tagGCAddAuctionItem> AddAuctionItemList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AddCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AddCount):
+ temAddAuctionItemList = tagGCAddAuctionItem()
+ _pos = temAddAuctionItemList.ReadData(_lpData, _pos)
+ self.AddAuctionItemList.append(temAddAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x04
+ self.AddCount = 0
+ self.AddAuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AddCount):
+ length += self.AddAuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AddCount)
+ for i in range(self.AddCount):
+ data = CommFunc.WriteString(data, self.AddAuctionItemList[i].GetLength(), self.AddAuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AddCount:%d,
+ AddAuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AddCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAddAuctionItemInfo=tagGCAddAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAddAuctionItemInfo.Head.Cmd,m_NAtagGCAddAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAddAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 07 拍卖行关注的物品ID #tagGCAttentionAuctionItemID
+
+class tagGCAttentionAuctionItemID(Structure):
+ Head = tagHead()
+ AttentionCount = 0 #(BYTE AttentionCount)
+ AttentionItemIDList = list() #(vector<DWORD> AttentionItemIDList)// 关注的物品ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AttentionCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AttentionCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.AttentionItemIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x07
+ self.AttentionCount = 0
+ self.AttentionItemIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.AttentionCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AttentionCount)
+ for i in range(self.AttentionCount):
+ data = CommFunc.WriteDWORD(data, self.AttentionItemIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AttentionCount:%d,
+ AttentionItemIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AttentionCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAttentionAuctionItemID=tagGCAttentionAuctionItemID()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemID.Head.Cmd,m_NAtagGCAttentionAuctionItemID.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemID
+
+
+#------------------------------------------------------
+# B5 06 拍卖行关注中的拍品信息 #tagGCAttentionAuctionItemInfo
+
+class tagGCAttentionAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCAttentionAuctionItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCAttentionAuctionItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCAttentionAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x06
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAttentionAuctionItemInfo=tagGCAttentionAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAttentionAuctionItemInfo.Head.Cmd,m_NAtagGCAttentionAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAttentionAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 01 拍卖行拍卖中的物品信息 #tagGCAuctionItemInfo
+
+class tagGCAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCAuctionItemInfo(Structure):
+ Head = tagHead()
+ Job = 0 #(BYTE Job)//过滤职业,0为不限制
+ ItemTypeCount = 0 #(BYTE ItemTypeCount)
+ ItemTypeList = list() #(vector<DWORD> ItemTypeList)//指定的物品类型
+ ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制
+ SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数
+ SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID
+ FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询
+ QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查,3-定位查询
+ QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部
+ QueryRemainlCount = 0 #(WORD QueryRemainlCount)//查询条件对应查询方向剩余个数
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//返回拍品数量
+ AuctionItemList = list() #(vector<tagGCAuctionItem> AuctionItemList)//返回拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemTypeCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ItemTypeList.append(value)
+ self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SpecItemIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SpecItemIDList.append(value)
+ self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.QueryRemainlCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x01
+ self.Job = 0
+ self.ItemTypeCount = 0
+ self.ItemTypeList = list()
+ self.ClassLV = 0
+ self.SpecItemIDCount = 0
+ self.SpecItemIDList = list()
+ self.FromItemGUID = ""
+ self.QueryDir = 0
+ self.QueryCount = 0
+ self.QueryRemainlCount = 0
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.ItemTypeCount
+ length += 1
+ length += 1
+ length += 4 * self.SpecItemIDCount
+ length += 40
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
+ for i in range(self.ItemTypeCount):
+ data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
+ data = CommFunc.WriteBYTE(data, self.ClassLV)
+ data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
+ for i in range(self.SpecItemIDCount):
+ data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
+ data = CommFunc.WriteString(data, 40, self.FromItemGUID)
+ data = CommFunc.WriteBYTE(data, self.QueryDir)
+ data = CommFunc.WriteBYTE(data, self.QueryCount)
+ data = CommFunc.WriteWORD(data, self.QueryRemainlCount)
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Job:%d,
+ ItemTypeCount:%d,
+ ItemTypeList:%s,
+ ClassLV:%d,
+ SpecItemIDCount:%d,
+ SpecItemIDList:%s,
+ FromItemGUID:%s,
+ QueryDir:%d,
+ QueryCount:%d,
+ QueryRemainlCount:%d,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Job,
+ self.ItemTypeCount,
+ "...",
+ self.ClassLV,
+ self.SpecItemIDCount,
+ "...",
+ self.FromItemGUID,
+ self.QueryDir,
+ self.QueryCount,
+ self.QueryRemainlCount,
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAuctionItemInfo=tagGCAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAuctionItemInfo.Head.Cmd,m_NAtagGCAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 10 拍卖行玩家竞价中的物品信息 #tagGCBiddingItemInfo
+
+class tagGCBiddingItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderID = 0 #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderID = 0
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteDWORD(data, self.BidderID)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderID:%d,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderID,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCBiddingItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCBiddingItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCBiddingItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCBiddingItemInfo=tagGCBiddingItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBiddingItemInfo.Head.Cmd,m_NAtagGCBiddingItemInfo.Head.SubCmd))] = m_NAtagGCBiddingItemInfo
+
+
+#------------------------------------------------------
+# B5 09 拍卖行清除拍品 #tagGCClearAuctionItemInfo
+
+class tagGCClearAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s
+ '''\
+ %(
+ self.ItemGUID
+ )
+ return DumpString
+
+
+class tagGCClearAuctionItemInfo(Structure):
+ Head = tagHead()
+ ClearCount = 0 #(BYTE ClearCount)
+ ClearAuctionItemList = list() #(vector<tagGCClearAuctionItem> ClearAuctionItemList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x09
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ClearCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ClearCount):
+ temClearAuctionItemList = tagGCClearAuctionItem()
+ _pos = temClearAuctionItemList.ReadData(_lpData, _pos)
+ self.ClearAuctionItemList.append(temClearAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x09
+ self.ClearCount = 0
+ self.ClearAuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.ClearCount):
+ length += self.ClearAuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ClearCount)
+ for i in range(self.ClearCount):
+ data = CommFunc.WriteString(data, self.ClearAuctionItemList[i].GetLength(), self.ClearAuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ClearCount:%d,
+ ClearAuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ClearCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCClearAuctionItemInfo=tagGCClearAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAuctionItemInfo.Head.Cmd,m_NAtagGCClearAuctionItemInfo.Head.SubCmd))] = m_NAtagGCClearAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo
+
+class tagGCFamilyAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ FamilyPlayerIDLen = 0 #(WORD FamilyPlayerIDLen)
+ FamilyPlayerIDInfo = "" #(String FamilyPlayerIDInfo)//可获得收益的仙盟玩家ID信息
+ AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FamilyPlayerIDInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyPlayerIDLen)
+ self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ self.FamilyPlayerIDLen = 0
+ self.FamilyPlayerIDInfo = ""
+ self.AuctionType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+ length += 2
+ length += len(self.FamilyPlayerIDInfo)
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen)
+ data = CommFunc.WriteString(data, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo)
+ data = CommFunc.WriteBYTE(data, self.AuctionType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s,
+ FamilyPlayerIDLen:%d,
+ FamilyPlayerIDInfo:%s,
+ AuctionType:%d
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData,
+ self.FamilyPlayerIDLen,
+ self.FamilyPlayerIDInfo,
+ self.AuctionType
+ )
+ return DumpString
+
+
+class tagGCFamilyAuctionItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCFamilyAuctionItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x05
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCFamilyAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x05
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCFamilyAuctionItemInfo=tagGCFamilyAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyAuctionItemInfo.Head.Cmd,m_NAtagGCFamilyAuctionItemInfo.Head.SubCmd))] = m_NAtagGCFamilyAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 02 拍卖行玩家拍卖中的物品信息 #tagGCPlayerAuctionItemInfo
+
+class tagGCPlayerAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ AddTime = "" #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(WORD BidderPrice)//竞拍玩家出价
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.AddTime = ""
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 4
+ length += 2
+ length += 19
+ length += 2
+ length += 19
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ ItemID:%d,
+ ItemCount:%d,
+ AddTime:%s,
+ BidderPrice:%d,
+ BiddingTime:%s,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.ItemID,
+ self.ItemCount,
+ self.AddTime,
+ self.BidderPrice,
+ self.BiddingTime,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCPlayerAuctionItemInfo(Structure):
+ Head = tagHead()
+ AuctionItemCount = 0 #(BYTE AuctionItemCount)//拍品数量
+ AuctionItemList = list() #(vector<tagGCPlayerAuctionItem> AuctionItemList)//拍品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x02
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AuctionItemCount):
+ temAuctionItemList = tagGCPlayerAuctionItem()
+ _pos = temAuctionItemList.ReadData(_lpData, _pos)
+ self.AuctionItemList.append(temAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x02
+ self.AuctionItemCount = 0
+ self.AuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.AuctionItemCount):
+ length += self.AuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
+ for i in range(self.AuctionItemCount):
+ data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AuctionItemCount:%d,
+ AuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AuctionItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCPlayerAuctionItemInfo=tagGCPlayerAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionItemInfo.Head.Cmd,m_NAtagGCPlayerAuctionItemInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionItemInfo
+
+
+#------------------------------------------------------
+# B5 03 拍卖行玩家拍卖记录 #tagGCPlayerAuctionRecordInfo
+
+class tagGCPlayerAuctionRecord(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ FamilyID = 0 #(DWORD FamilyID)//有值时为仙盟拍品
+ RecordType = 0 #(BYTE RecordType)//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
+ RecordResult = 0 #(BYTE RecordResult)//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
+ RecordTime = "" #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss
+ BidderPrice = 0 #(DWORD BidderPrice)//成交价格
+ BidderName = "" #(char BidderName[33])//成交玩家名
+ ItemID = 0 #(DWORD ItemID)
+ ItemCount = 0 #(WORD ItemCount)
+ UserDataLen = 0 #(WORD UserDataLen)
+ UserData = "" #(String UserData)//自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RecordResult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BidderName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.FamilyID = 0
+ self.RecordType = 0
+ self.RecordResult = 0
+ self.RecordTime = ""
+ self.BidderPrice = 0
+ self.BidderName = ""
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.UserDataLen = 0
+ self.UserData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 1
+ length += 1
+ length += 19
+ length += 4
+ length += 33
+ length += 4
+ length += 2
+ length += 2
+ length += len(self.UserData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.FamilyID)
+ data = CommFunc.WriteBYTE(data, self.RecordType)
+ data = CommFunc.WriteBYTE(data, self.RecordResult)
+ data = CommFunc.WriteString(data, 19, self.RecordTime)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 33, self.BidderName)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteWORD(data, self.ItemCount)
+ data = CommFunc.WriteWORD(data, self.UserDataLen)
+ data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ FamilyID:%d,
+ RecordType:%d,
+ RecordResult:%d,
+ RecordTime:%s,
+ BidderPrice:%d,
+ BidderName:%s,
+ ItemID:%d,
+ ItemCount:%d,
+ UserDataLen:%d,
+ UserData:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.FamilyID,
+ self.RecordType,
+ self.RecordResult,
+ self.RecordTime,
+ self.BidderPrice,
+ self.BidderName,
+ self.ItemID,
+ self.ItemCount,
+ self.UserDataLen,
+ self.UserData
+ )
+ return DumpString
+
+
+class tagGCPlayerAuctionRecordInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ AuctionRecordList = list() #(vector<tagGCPlayerAuctionRecord> AuctionRecordList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x03
+ 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):
+ temAuctionRecordList = tagGCPlayerAuctionRecord()
+ _pos = temAuctionRecordList.ReadData(_lpData, _pos)
+ self.AuctionRecordList.append(temAuctionRecordList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x03
+ self.Count = 0
+ self.AuctionRecordList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.AuctionRecordList[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.AuctionRecordList[i].GetLength(), self.AuctionRecordList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ AuctionRecordList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCPlayerAuctionRecordInfo=tagGCPlayerAuctionRecordInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionRecordInfo.Head.Cmd,m_NAtagGCPlayerAuctionRecordInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionRecordInfo
+
+
+#------------------------------------------------------
+# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItemInfo
+
+class tagGCRefreshAuctionItem(Structure):
+ ItemGUID = "" #(char ItemGUID[40])
+ AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
+ AddTime = "" #(char AddTime[19])//上架时间
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
+ BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ return _pos
+
+ def Clear(self):
+ self.ItemGUID = ""
+ self.AuctionType = 0
+ self.AddTime = ""
+ self.BidderID = 0
+ self.BidderPrice = 0
+ self.BiddingTime = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 1
+ length += 19
+ length += 4
+ length += 4
+ length += 19
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteBYTE(data, self.AuctionType)
+ data = CommFunc.WriteString(data, 19, self.AddTime)
+ data = CommFunc.WriteDWORD(data, self.BidderID)
+ data = CommFunc.WriteDWORD(data, self.BidderPrice)
+ data = CommFunc.WriteString(data, 19, self.BiddingTime)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ItemGUID:%s,
+ AuctionType:%d,
+ AddTime:%s,
+ BidderID:%d,
+ BidderPrice:%d,
+ BiddingTime:%s
+ '''\
+ %(
+ self.ItemGUID,
+ self.AuctionType,
+ self.AddTime,
+ self.BidderID,
+ self.BidderPrice,
+ self.BiddingTime
+ )
+ return DumpString
+
+
+class tagGCRefreshAuctionItemInfo(Structure):
+ Head = tagHead()
+ RefreshCount = 0 #(BYTE RefreshCount)
+ RefreshAuctionItemList = list() #(vector<tagGCRefreshAuctionItem> RefreshAuctionItemList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x08
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RefreshCount):
+ temRefreshAuctionItemList = tagGCRefreshAuctionItem()
+ _pos = temRefreshAuctionItemList.ReadData(_lpData, _pos)
+ self.RefreshAuctionItemList.append(temRefreshAuctionItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x08
+ self.RefreshCount = 0
+ self.RefreshAuctionItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.RefreshCount):
+ length += self.RefreshAuctionItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.RefreshCount)
+ for i in range(self.RefreshCount):
+ data = CommFunc.WriteString(data, self.RefreshAuctionItemList[i].GetLength(), self.RefreshAuctionItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RefreshCount:%d,
+ RefreshAuctionItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RefreshCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCRefreshAuctionItemInfo=tagGCRefreshAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItemInfo.Head.Cmd,m_NAtagGCRefreshAuctionItemInfo.Head.SubCmd))] = m_NAtagGCRefreshAuctionItemInfo
#------------------------------------------------------
@@ -8138,8 +9741,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
@@ -8226,6 +9829,7 @@
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
MaxHP = 0 #(DWORD MaxHP)// 默认满血
+ MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
data = None
def __init__(self):
@@ -8240,6 +9844,7 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -8249,6 +9854,7 @@
self.Job = 0
self.LV = 0
self.MaxHP = 0
+ self.MaxProDef = 0
return
def GetLength(self):
@@ -8258,6 +9864,7 @@
length += len(self.PlayerName)
length += 1
length += 2
+ length += 4
length += 4
return length
@@ -8270,6 +9877,7 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteDWORD(data, self.MaxHP)
+ data = CommFunc.WriteDWORD(data, self.MaxProDef)
return data
def OutputString(self):
@@ -8279,7 +9887,8 @@
PlayerName:%s,
Job:%d,
LV:%d,
- MaxHP:%d
+ MaxHP:%d,
+ MaxProDef:%d
'''\
%(
self.PlayerID,
@@ -8287,7 +9896,8 @@
self.PlayerName,
self.Job,
self.LV,
- self.MaxHP
+ self.MaxHP,
+ self.MaxProDef
)
return DumpString
@@ -8297,6 +9907,7 @@
RoomID = 0 #(WORD RoomID)// 房间ID
NameLen = 0 #(BYTE NameLen)
PlayerName = "" #(String PlayerName)// 跨服名字
+ Number = 0 #(BYTE Number)// 位置编号;1-左,2-右
MatchPlayerCount = 0 #(BYTE MatchPlayerCount)
MatchPlayer = list() #(vector<tagGCCrossRealmPKMatchPlayer> MatchPlayer)// 匹配到的玩家
data = None
@@ -8313,6 +9924,7 @@
self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.Number,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MatchPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.MatchPlayerCount):
temMatchPlayer = tagGCCrossRealmPKMatchPlayer()
@@ -8328,6 +9940,7 @@
self.RoomID = 0
self.NameLen = 0
self.PlayerName = ""
+ self.Number = 0
self.MatchPlayerCount = 0
self.MatchPlayer = list()
return
@@ -8338,6 +9951,7 @@
length += 2
length += 1
length += len(self.PlayerName)
+ length += 1
length += 1
for i in range(self.MatchPlayerCount):
length += self.MatchPlayer[i].GetLength()
@@ -8350,6 +9964,7 @@
data = CommFunc.WriteWORD(data, self.RoomID)
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Number)
data = CommFunc.WriteBYTE(data, self.MatchPlayerCount)
for i in range(self.MatchPlayerCount):
data = CommFunc.WriteString(data, self.MatchPlayer[i].GetLength(), self.MatchPlayer[i].GetBuffer())
@@ -8361,6 +9976,7 @@
RoomID:%d,
NameLen:%d,
PlayerName:%s,
+ Number:%d,
MatchPlayerCount:%d,
MatchPlayer:%s
'''\
@@ -8369,6 +9985,7 @@
self.RoomID,
self.NameLen,
self.PlayerName,
+ self.Number,
self.MatchPlayerCount,
"..."
)
@@ -8390,7 +10007,7 @@
RoundCount = 0 #(BYTE RoundCount)// PK回合数
RoundWinnerID = list() #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表
AddScore = 0 #(WORD AddScore)// 本场加分
- Score = 0 #(WORD Score)// 当前积分
+ Score = 0 #(DWORD Score)// 当前积分
DanLV = 0 #(BYTE DanLV)// 当前段位
CWinCnt = 0 #(WORD CWinCnt)// 当前连胜数
TagNameLen = 0 #(BYTE TagNameLen)
@@ -8414,7 +10031,7 @@
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.RoundWinnerID.append(value)
self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -8448,7 +10065,7 @@
length += 1
length += 4 * self.RoundCount
length += 2
- length += 2
+ length += 4
length += 1
length += 2
length += 1
@@ -8466,7 +10083,7 @@
for i in range(self.RoundCount):
data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i])
data = CommFunc.WriteWORD(data, self.AddScore)
- data = CommFunc.WriteWORD(data, self.Score)
+ data = CommFunc.WriteDWORD(data, self.Score)
data = CommFunc.WriteBYTE(data, self.DanLV)
data = CommFunc.WriteWORD(data, self.CWinCnt)
data = CommFunc.WriteBYTE(data, self.TagNameLen)
@@ -8712,64 +10329,92 @@
# C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
class tagGCCrossRealmPKSeasonState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ZoneID", c_ubyte), # 所属赛区ID
- ("SeasonID", c_ushort), # 当前赛季ID
- ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束
- ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中
- ]
+ Head = tagHead()
+ ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID
+ SeasonID = 0 #(WORD SeasonID)// 当前赛季ID
+ SeasonState = 0 #(BYTE SeasonState)// 赛季状态;0-未开启,1-开启中,2-已结束
+ MatchState = 0 #(BYTE MatchState)// 匹配状态;0-未开启;1-开启中
+ CrossZoneNameLen = 0 #(BYTE CrossZoneNameLen)
+ CrossZoneName = "" #(String CrossZoneName)// 跨服分区名
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xC0
- self.SubCmd = 0x06
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x06
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.SeasonState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MatchState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CrossZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CrossZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.CrossZoneNameLen)
+ return _pos
def Clear(self):
- self.Cmd = 0xC0
- self.SubCmd = 0x06
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xC0
+ self.Head.SubCmd = 0x06
self.ZoneID = 0
self.SeasonID = 0
self.SeasonState = 0
self.MatchState = 0
+ self.CrossZoneNameLen = 0
+ self.CrossZoneName = ""
return
def GetLength(self):
- return sizeof(tagGCCrossRealmPKSeasonState)
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 1
+ length += len(self.CrossZoneName)
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ZoneID)
+ data = CommFunc.WriteWORD(data, self.SeasonID)
+ data = CommFunc.WriteBYTE(data, self.SeasonState)
+ data = CommFunc.WriteBYTE(data, self.MatchState)
+ data = CommFunc.WriteBYTE(data, self.CrossZoneNameLen)
+ data = CommFunc.WriteString(data, self.CrossZoneNameLen, self.CrossZoneName)
+ return data
def OutputString(self):
- DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
ZoneID:%d,
SeasonID:%d,
SeasonState:%d,
- MatchState:%d
+ MatchState:%d,
+ CrossZoneNameLen:%d,
+ CrossZoneName:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.ZoneID,
self.SeasonID,
self.SeasonState,
- self.MatchState
+ self.MatchState,
+ self.CrossZoneNameLen,
+ self.CrossZoneName
)
return DumpString
m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Head.Cmd,m_NAtagGCCrossRealmPKSeasonState.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
#------------------------------------------------------
@@ -9049,6 +10694,714 @@
m_NAtagMCCoinToGoldReport=tagMCCoinToGoldReport()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCoinToGoldReport.Head.Cmd,m_NAtagMCCoinToGoldReport.Head.SubCmd))] = m_NAtagMCCoinToGoldReport
+
+
+#------------------------------------------------------
+# A1 12 玩家初始化 #tagMCDBPlayer
+
+class tagMCDBPlayer(Structure):
+ Head = tagHead()
+ AccID = "" #(char AccID[65])//帐号名, 该角色所在的帐号的用户名
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])//size = 14
+ AccState = 0 #(BYTE AccState)//0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除
+ GMLevel = 0 #(BYTE GMLevel)//GM等级, 0:不是GM >=1 : GM的等级
+ Sex = 0 #(BYTE Sex)//性别
+ Job = 0 #(BYTE Job)//职业, 0.新手 1.游侠 2.战士 3.弓箭手 4.术士 5.道士
+ ReincarnationLv = 0 #(WORD ReincarnationLv)// 转生等级
+ LV = 0 #(WORD LV)//等级
+ LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生
+ LV2 = 0 #(WORD LV2)//大师等级
+ ExpPoint = 0 #(DWORD ExpPoint)//扩充经验点数
+ TotalExp = 0 #(DWORD TotalExp)//总经验
+ Family = 0 #(DWORD Family)//家族
+ FamilyName = "" #(char FamilyName[33])//家族名称
+ TeamHornor = 0 #(int TeamHornor)//组队荣誉
+ FamilyHornor = 0 #(int FamilyHornor)//家族荣耀
+ FamilyActiveValue = 0 #(int FamilyActiveValue)//家族活跃度
+ LastWeekFamilyActiveValue = 0 #(int LastWeekFamilyActiveValue)//上周家族活跃度
+ CountryHornor = 0 #(int CountryHornor)//本周国家功勋值
+ CountryLastWeekHornor = 0 #(int CountryLastWeekHornor)//上周国家功勋值
+ Mate = 0 #(DWORD Mate)
+ Gold = 0 #(DWORD Gold)//金子
+ GoldPaper = 0 #(DWORD GoldPaper)//金票
+ Silver = 0 #(DWORD Silver)//银子
+ SilverPaper = 0 #(DWORD SilverPaper)//银票
+ FightPoint = 0 #(DWORD FightPoint)//战斗值
+ HappyPoint = 0 #(DWORD HappyPoint)//脱机挂时长(秒)
+ LineID = 0 #(BYTE LineID)//角色所在线路
+ MapID = 0 #(WORD MapID)//角色所在地图
+ PosX = 0 #(WORD PosX)//角色坐标
+ PosY = 0 #(WORD PosY)
+ RebornMapID = 0 #(WORD RebornMapID)//重生点地图ID
+ RebornPosX = 0 #(WORD RebornPosX)
+ RebornPosY = 0 #(WORD RebornPosY)
+ State = 0 #(BYTE State)//角色状态 0.正常在线1.脱机挂在线 2脱机挂死亡
+ HP = 0 #(DWORD HP)//当前HP
+ XP = 0 #(DWORD XP)//当前XP
+ HPRestoreSetting = 0 #(WORD HPRestoreSetting)//少于这个值%自动喝血
+ MPRestoreSetting = 0 #(WORD MPRestoreSetting)//少于这个值%自动喝魔
+ FreePoint = 0 #(DWORD FreePoint)//未分配点数
+ FreeSkillPoint = 0 #(DWORD FreeSkillPoint)//未分配的技能点
+ BaseSTR = 0 #(int BaseSTR)//裸体力量
+ BasePNE = 0 #(int BasePNE)//裸体真元
+ BasePHY = 0 #(int BasePHY)//裸体筋骨
+ BaseCON = 0 #(int BaseCON)//裸体体魄
+ STR = 0 #(int STR)//力量
+ PNE = 0 #(int PNE)//真元
+ PHY = 0 #(int PHY)//筋骨
+ CON = 0 #(int CON)//体魄
+ PKValue = 0 #(WORD PKValue)//衡量PK能力的一项属性,由攻防计算而得
+ BackpackLV = 0 #(BYTE BackpackLV)//背包等级
+ WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
+ TeamID = 0 #(DWORD TeamID)//队伍ID
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
+ AttackMode = 0 #(BYTE AttackMode)//攻击模式
+ LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
+ FBID = 0 #(BYTE FBID)//fb id
+ FamilyLV = 0 #(BYTE FamilyLV)//家族等级
+ FriendFavor = 0 #(DWORD FriendFavor)//好友人气值
+ Energy = 0 #(DWORD Energy)//精力值
+ EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//装备显示开关
+ LuckValue = 0 #(DWORD LuckValue)//幸运值
+ ExAttr1 = 0 #(DWORD ExAttr1)//扩展属性1,各项目专用
+ ExAttr2 = 0 #(DWORD ExAttr2)//扩展属性2,各项目专用
+ ExAttr3 = 0 #(DWORD ExAttr3)//扩展属性3,各项目专用
+ ExAttr4 = 0 #(DWORD ExAttr4)//扩展属性4,各项目专用
+ ExAttr5 = 0 #(DWORD ExAttr5)//扩展属性5,各项目专用
+ Faction = 0 #(BYTE Faction)//阵营
+ InfamyValue = 0 #(DWORD InfamyValue)//恶名值
+ OfficialRank = 0 #(BYTE OfficialRank)//官阶,官职等级
+ ChangeCoinPointTotal = 0 #(DWORD ChangeCoinPointTotal)//兑换的点数总计
+ VIPLv = 0 #(BYTE VIPLv)//VIP等级
+ VIPLvForPhone = 0 #(BYTE VIPLvForPhone)//移动VIP等级
+ ExAttr6 = 0 #(DWORD ExAttr6)//扩展属性6,各项目专用
+ ExAttr7 = 0 #(DWORD ExAttr7)//扩展属性7,各项目专用
+ ExAttr8 = 0 #(DWORD ExAttr8)//扩展属性8,各项目专用
+ ExAttr9 = 0 #(DWORD ExAttr9)//扩展属性9,各项目专用
+ ExAttr10 = 0 #(DWORD ExAttr10)//扩展属性10,各项目专用
+ ModelMark = 0 #(DWORD ModelMark)// 变形模型mark
+ ExAttr11 = 0 #(DWORD ExAttr11)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr12 = 0 #(DWORD ExAttr12)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr13 = 0 #(DWORD ExAttr13)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr14 = 0 #(DWORD ExAttr14)//预留的扩展属性字段,用来存放项目特定的属性
+ OperateInfo = 0 #(DWORD OperateInfo)//玩家附加运营商信息
+ Operate = "" #(char Operate[15])//所属运营商平台名
+ ServerID = 0 #(DWORD ServerID)//所属区服ID
+ ExAttr15 = 0 #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr16 = 0 #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr17 = 0 #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
+ ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,65)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.AccState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.GMLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Sex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TotalExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Family,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.TeamHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LastWeekFamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountryHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CountryLastWeekHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Mate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Gold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GoldPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Silver,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SilverPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HappyPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornMapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornPosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RebornPosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.XP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.MPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.FreePoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FreeSkillPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BaseSTR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BasePNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BasePHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BaseCON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.STR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PKValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.BackpackLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WarehouseLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.UseGoldType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.UseSilverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AttackMode,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LastWeekOnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FBID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.FriendFavor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LuckValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.InfamyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OfficialRank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ChangeCoinPointTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.VIPLv,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.VIPLvForPhone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExAttr6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr9,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr10,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr11,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr12,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr13,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr14,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Operate,_pos = CommFunc.ReadString(_lpData, _pos,15)
+ self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA1
+ self.Head.SubCmd = 0x12
+ self.AccID = ""
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.AccState = 0
+ self.GMLevel = 0
+ self.Sex = 0
+ self.Job = 0
+ self.ReincarnationLv = 0
+ self.LV = 0
+ self.LVEx = 0
+ self.LV2 = 0
+ self.ExpPoint = 0
+ self.TotalExp = 0
+ self.Family = 0
+ self.FamilyName = ""
+ self.TeamHornor = 0
+ self.FamilyHornor = 0
+ self.FamilyActiveValue = 0
+ self.LastWeekFamilyActiveValue = 0
+ self.CountryHornor = 0
+ self.CountryLastWeekHornor = 0
+ self.Mate = 0
+ self.Gold = 0
+ self.GoldPaper = 0
+ self.Silver = 0
+ self.SilverPaper = 0
+ self.FightPoint = 0
+ self.HappyPoint = 0
+ self.LineID = 0
+ self.MapID = 0
+ self.PosX = 0
+ self.PosY = 0
+ self.RebornMapID = 0
+ self.RebornPosX = 0
+ self.RebornPosY = 0
+ self.State = 0
+ self.HP = 0
+ self.XP = 0
+ self.HPRestoreSetting = 0
+ self.MPRestoreSetting = 0
+ self.FreePoint = 0
+ self.FreeSkillPoint = 0
+ self.BaseSTR = 0
+ self.BasePNE = 0
+ self.BasePHY = 0
+ self.BaseCON = 0
+ self.STR = 0
+ self.PNE = 0
+ self.PHY = 0
+ self.CON = 0
+ self.PKValue = 0
+ self.BackpackLV = 0
+ self.WarehouseLV = 0
+ self.TeamID = 0
+ self.UseGoldType = 0
+ self.UseSilverType = 0
+ self.AttackMode = 0
+ self.LastWeekOnlineTime = 0
+ self.FBID = 0
+ self.FamilyLV = 0
+ self.FriendFavor = 0
+ self.Energy = 0
+ self.EquipShowSwitch = 0
+ self.LuckValue = 0
+ self.ExAttr1 = 0
+ self.ExAttr2 = 0
+ self.ExAttr3 = 0
+ self.ExAttr4 = 0
+ self.ExAttr5 = 0
+ self.Faction = 0
+ self.InfamyValue = 0
+ self.OfficialRank = 0
+ self.ChangeCoinPointTotal = 0
+ self.VIPLv = 0
+ self.VIPLvForPhone = 0
+ self.ExAttr6 = 0
+ self.ExAttr7 = 0
+ self.ExAttr8 = 0
+ self.ExAttr9 = 0
+ self.ExAttr10 = 0
+ self.ModelMark = 0
+ self.ExAttr11 = 0
+ self.ExAttr12 = 0
+ self.ExAttr13 = 0
+ self.ExAttr14 = 0
+ self.OperateInfo = 0
+ self.Operate = ""
+ self.ServerID = 0
+ self.ExAttr15 = 0
+ self.ExAttr16 = 0
+ self.ExAttr17 = 0
+ self.ExAttr18 = 0
+ self.ExAttr19 = 0
+ self.ExAttr20 = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 65
+ length += 4
+ length += 33
+ length += 1
+ length += 1
+ length += 1
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 33
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 2
+ length += 1
+ length += 4
+ length += 4
+ length += 2
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 15
+ length += 4
+ length += 4
+ length += 4
+ 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.WriteString(data, 65, self.AccID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.AccState)
+ data = CommFunc.WriteBYTE(data, self.GMLevel)
+ data = CommFunc.WriteBYTE(data, self.Sex)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.ReincarnationLv)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.LVEx)
+ data = CommFunc.WriteWORD(data, self.LV2)
+ data = CommFunc.WriteDWORD(data, self.ExpPoint)
+ data = CommFunc.WriteDWORD(data, self.TotalExp)
+ data = CommFunc.WriteDWORD(data, self.Family)
+ data = CommFunc.WriteString(data, 33, self.FamilyName)
+ data = CommFunc.WriteDWORD(data, self.TeamHornor)
+ data = CommFunc.WriteDWORD(data, self.FamilyHornor)
+ data = CommFunc.WriteDWORD(data, self.FamilyActiveValue)
+ data = CommFunc.WriteDWORD(data, self.LastWeekFamilyActiveValue)
+ data = CommFunc.WriteDWORD(data, self.CountryHornor)
+ data = CommFunc.WriteDWORD(data, self.CountryLastWeekHornor)
+ data = CommFunc.WriteDWORD(data, self.Mate)
+ data = CommFunc.WriteDWORD(data, self.Gold)
+ data = CommFunc.WriteDWORD(data, self.GoldPaper)
+ data = CommFunc.WriteDWORD(data, self.Silver)
+ data = CommFunc.WriteDWORD(data, self.SilverPaper)
+ data = CommFunc.WriteDWORD(data, self.FightPoint)
+ data = CommFunc.WriteDWORD(data, self.HappyPoint)
+ data = CommFunc.WriteBYTE(data, self.LineID)
+ data = CommFunc.WriteWORD(data, self.MapID)
+ data = CommFunc.WriteWORD(data, self.PosX)
+ data = CommFunc.WriteWORD(data, self.PosY)
+ data = CommFunc.WriteWORD(data, self.RebornMapID)
+ data = CommFunc.WriteWORD(data, self.RebornPosX)
+ data = CommFunc.WriteWORD(data, self.RebornPosY)
+ data = CommFunc.WriteBYTE(data, self.State)
+ data = CommFunc.WriteDWORD(data, self.HP)
+ data = CommFunc.WriteDWORD(data, self.XP)
+ data = CommFunc.WriteWORD(data, self.HPRestoreSetting)
+ data = CommFunc.WriteWORD(data, self.MPRestoreSetting)
+ data = CommFunc.WriteDWORD(data, self.FreePoint)
+ data = CommFunc.WriteDWORD(data, self.FreeSkillPoint)
+ data = CommFunc.WriteDWORD(data, self.BaseSTR)
+ data = CommFunc.WriteDWORD(data, self.BasePNE)
+ data = CommFunc.WriteDWORD(data, self.BasePHY)
+ data = CommFunc.WriteDWORD(data, self.BaseCON)
+ data = CommFunc.WriteDWORD(data, self.STR)
+ data = CommFunc.WriteDWORD(data, self.PNE)
+ data = CommFunc.WriteDWORD(data, self.PHY)
+ data = CommFunc.WriteDWORD(data, self.CON)
+ data = CommFunc.WriteWORD(data, self.PKValue)
+ data = CommFunc.WriteBYTE(data, self.BackpackLV)
+ data = CommFunc.WriteBYTE(data, self.WarehouseLV)
+ data = CommFunc.WriteDWORD(data, self.TeamID)
+ data = CommFunc.WriteBYTE(data, self.UseGoldType)
+ data = CommFunc.WriteBYTE(data, self.UseSilverType)
+ data = CommFunc.WriteBYTE(data, self.AttackMode)
+ data = CommFunc.WriteDWORD(data, self.LastWeekOnlineTime)
+ data = CommFunc.WriteBYTE(data, self.FBID)
+ data = CommFunc.WriteBYTE(data, self.FamilyLV)
+ data = CommFunc.WriteDWORD(data, self.FriendFavor)
+ data = CommFunc.WriteDWORD(data, self.Energy)
+ data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
+ data = CommFunc.WriteDWORD(data, self.LuckValue)
+ data = CommFunc.WriteDWORD(data, self.ExAttr1)
+ data = CommFunc.WriteDWORD(data, self.ExAttr2)
+ data = CommFunc.WriteDWORD(data, self.ExAttr3)
+ data = CommFunc.WriteDWORD(data, self.ExAttr4)
+ data = CommFunc.WriteDWORD(data, self.ExAttr5)
+ data = CommFunc.WriteBYTE(data, self.Faction)
+ data = CommFunc.WriteDWORD(data, self.InfamyValue)
+ data = CommFunc.WriteBYTE(data, self.OfficialRank)
+ data = CommFunc.WriteDWORD(data, self.ChangeCoinPointTotal)
+ data = CommFunc.WriteBYTE(data, self.VIPLv)
+ data = CommFunc.WriteBYTE(data, self.VIPLvForPhone)
+ data = CommFunc.WriteDWORD(data, self.ExAttr6)
+ data = CommFunc.WriteDWORD(data, self.ExAttr7)
+ data = CommFunc.WriteDWORD(data, self.ExAttr8)
+ data = CommFunc.WriteDWORD(data, self.ExAttr9)
+ data = CommFunc.WriteDWORD(data, self.ExAttr10)
+ data = CommFunc.WriteDWORD(data, self.ModelMark)
+ data = CommFunc.WriteDWORD(data, self.ExAttr11)
+ data = CommFunc.WriteDWORD(data, self.ExAttr12)
+ data = CommFunc.WriteDWORD(data, self.ExAttr13)
+ data = CommFunc.WriteDWORD(data, self.ExAttr14)
+ data = CommFunc.WriteDWORD(data, self.OperateInfo)
+ data = CommFunc.WriteString(data, 15, self.Operate)
+ data = CommFunc.WriteDWORD(data, self.ServerID)
+ data = CommFunc.WriteDWORD(data, self.ExAttr15)
+ data = CommFunc.WriteDWORD(data, self.ExAttr16)
+ data = CommFunc.WriteDWORD(data, self.ExAttr17)
+ data = CommFunc.WriteDWORD(data, self.ExAttr18)
+ data = CommFunc.WriteDWORD(data, self.ExAttr19)
+ data = CommFunc.WriteDWORD(data, self.ExAttr20)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AccID:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ AccState:%d,
+ GMLevel:%d,
+ Sex:%d,
+ Job:%d,
+ ReincarnationLv:%d,
+ LV:%d,
+ LVEx:%d,
+ LV2:%d,
+ ExpPoint:%d,
+ TotalExp:%d,
+ Family:%d,
+ FamilyName:%s,
+ TeamHornor:%d,
+ FamilyHornor:%d,
+ FamilyActiveValue:%d,
+ LastWeekFamilyActiveValue:%d,
+ CountryHornor:%d,
+ CountryLastWeekHornor:%d,
+ Mate:%d,
+ Gold:%d,
+ GoldPaper:%d,
+ Silver:%d,
+ SilverPaper:%d,
+ FightPoint:%d,
+ HappyPoint:%d,
+ LineID:%d,
+ MapID:%d,
+ PosX:%d,
+ PosY:%d,
+ RebornMapID:%d,
+ RebornPosX:%d,
+ RebornPosY:%d,
+ State:%d,
+ HP:%d,
+ XP:%d,
+ HPRestoreSetting:%d,
+ MPRestoreSetting:%d,
+ FreePoint:%d,
+ FreeSkillPoint:%d,
+ BaseSTR:%d,
+ BasePNE:%d,
+ BasePHY:%d,
+ BaseCON:%d,
+ STR:%d,
+ PNE:%d,
+ PHY:%d,
+ CON:%d,
+ PKValue:%d,
+ BackpackLV:%d,
+ WarehouseLV:%d,
+ TeamID:%d,
+ UseGoldType:%d,
+ UseSilverType:%d,
+ AttackMode:%d,
+ LastWeekOnlineTime:%d,
+ FBID:%d,
+ FamilyLV:%d,
+ FriendFavor:%d,
+ Energy:%d,
+ EquipShowSwitch:%d,
+ LuckValue:%d,
+ ExAttr1:%d,
+ ExAttr2:%d,
+ ExAttr3:%d,
+ ExAttr4:%d,
+ ExAttr5:%d,
+ Faction:%d,
+ InfamyValue:%d,
+ OfficialRank:%d,
+ ChangeCoinPointTotal:%d,
+ VIPLv:%d,
+ VIPLvForPhone:%d,
+ ExAttr6:%d,
+ ExAttr7:%d,
+ ExAttr8:%d,
+ ExAttr9:%d,
+ ExAttr10:%d,
+ ModelMark:%d,
+ ExAttr11:%d,
+ ExAttr12:%d,
+ ExAttr13:%d,
+ ExAttr14:%d,
+ OperateInfo:%d,
+ Operate:%s,
+ ServerID:%d,
+ ExAttr15:%d,
+ ExAttr16:%d,
+ ExAttr17:%d,
+ ExAttr18:%d,
+ ExAttr19:%d,
+ ExAttr20:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AccID,
+ self.PlayerID,
+ self.PlayerName,
+ self.AccState,
+ self.GMLevel,
+ self.Sex,
+ self.Job,
+ self.ReincarnationLv,
+ self.LV,
+ self.LVEx,
+ self.LV2,
+ self.ExpPoint,
+ self.TotalExp,
+ self.Family,
+ self.FamilyName,
+ self.TeamHornor,
+ self.FamilyHornor,
+ self.FamilyActiveValue,
+ self.LastWeekFamilyActiveValue,
+ self.CountryHornor,
+ self.CountryLastWeekHornor,
+ self.Mate,
+ self.Gold,
+ self.GoldPaper,
+ self.Silver,
+ self.SilverPaper,
+ self.FightPoint,
+ self.HappyPoint,
+ self.LineID,
+ self.MapID,
+ self.PosX,
+ self.PosY,
+ self.RebornMapID,
+ self.RebornPosX,
+ self.RebornPosY,
+ self.State,
+ self.HP,
+ self.XP,
+ self.HPRestoreSetting,
+ self.MPRestoreSetting,
+ self.FreePoint,
+ self.FreeSkillPoint,
+ self.BaseSTR,
+ self.BasePNE,
+ self.BasePHY,
+ self.BaseCON,
+ self.STR,
+ self.PNE,
+ self.PHY,
+ self.CON,
+ self.PKValue,
+ self.BackpackLV,
+ self.WarehouseLV,
+ self.TeamID,
+ self.UseGoldType,
+ self.UseSilverType,
+ self.AttackMode,
+ self.LastWeekOnlineTime,
+ self.FBID,
+ self.FamilyLV,
+ self.FriendFavor,
+ self.Energy,
+ self.EquipShowSwitch,
+ self.LuckValue,
+ self.ExAttr1,
+ self.ExAttr2,
+ self.ExAttr3,
+ self.ExAttr4,
+ self.ExAttr5,
+ self.Faction,
+ self.InfamyValue,
+ self.OfficialRank,
+ self.ChangeCoinPointTotal,
+ self.VIPLv,
+ self.VIPLvForPhone,
+ self.ExAttr6,
+ self.ExAttr7,
+ self.ExAttr8,
+ self.ExAttr9,
+ self.ExAttr10,
+ self.ModelMark,
+ self.ExAttr11,
+ self.ExAttr12,
+ self.ExAttr13,
+ self.ExAttr14,
+ self.OperateInfo,
+ self.Operate,
+ self.ServerID,
+ self.ExAttr15,
+ self.ExAttr16,
+ self.ExAttr17,
+ self.ExAttr18,
+ self.ExAttr19,
+ self.ExAttr20
+ )
+ return DumpString
+
+
+m_NAtagMCDBPlayer=tagMCDBPlayer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDBPlayer.Head.Cmd,m_NAtagMCDBPlayer.Head.SubCmd))] = m_NAtagMCDBPlayer
#------------------------------------------------------
@@ -10220,6 +12573,7 @@
_fields_ = [
("ItemID", c_int), #果实物品ID
("EatCnt", c_ushort), #已使用个数
+ ("AddItemCnt", c_int), #增幅丹使用个数
]
def __init__(self):
@@ -10234,6 +12588,7 @@
def Clear(self):
self.ItemID = 0
self.EatCnt = 0
+ self.AddItemCnt = 0
return
def GetLength(self):
@@ -10245,11 +12600,13 @@
def OutputString(self):
DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
ItemID:%d,
- EatCnt:%d
+ EatCnt:%d,
+ AddItemCnt:%d
'''\
%(
self.ItemID,
- self.EatCnt
+ self.EatCnt,
+ self.AddItemCnt
)
return DumpString
@@ -10850,6 +13207,8 @@
_fields_ = [
("ActionID", c_int), # ID
("DayFinishCnt", c_ushort), # 今日已完成次数
+ ("DayBuyTimes", c_ubyte), # 今日购买次数
+ ("DayItemTimes", c_ubyte), # 今日物品增加次数
("WeekFinishCnt", c_int), # 本周已完成次数
]
@@ -10865,6 +13224,8 @@
def Clear(self):
self.ActionID = 0
self.DayFinishCnt = 0
+ self.DayBuyTimes = 0
+ self.DayItemTimes = 0
self.WeekFinishCnt = 0
return
@@ -10878,11 +13239,15 @@
DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
ActionID:%d,
DayFinishCnt:%d,
+ DayBuyTimes:%d,
+ DayItemTimes:%d,
WeekFinishCnt:%d
'''\
%(
self.ActionID,
self.DayFinishCnt,
+ self.DayBuyTimes,
+ self.DayItemTimes,
self.WeekFinishCnt
)
return DumpString
@@ -11291,70 +13656,57 @@
#------------------------------------------------------
-# A3 09 通知玩家部位套装等级 #tagMCEquipPartSuiteLVInfo
+# A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
-class tagMCEquipPartSuiteLV(Structure):
- EquipIndex = 0 #(BYTE EquipIndex)
- Len = 0 #(WORD Len)//长度
- SuiteLVInfo = "" #(String SuiteLVInfo)//{套装类型:等级}
- data = None
+class tagMCEquipPartStar(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EquipPackIndex", c_ushort),
+ ("Star", c_ubyte),
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.SuiteLVInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
- self.EquipIndex = 0
- self.Len = 0
- self.SuiteLVInfo = ""
+ self.EquipPackIndex = 0
+ self.Star = 0
return
def GetLength(self):
- length = 0
- length += 1
- length += 2
- length += len(self.SuiteLVInfo)
-
- return length
+ return sizeof(tagMCEquipPartStar)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.EquipIndex)
- data = CommFunc.WriteWORD(data, self.Len)
- data = CommFunc.WriteString(data, self.Len, self.SuiteLVInfo)
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
- EquipIndex:%d,
- Len:%d,
- SuiteLVInfo:%s
+ DumpString = '''// A3 B1 装备部位星数信息 //tagMCEquipPartStarInfo:
+ EquipPackIndex:%d,
+ Star:%d
'''\
%(
- self.EquipIndex,
- self.Len,
- self.SuiteLVInfo
+ self.EquipPackIndex,
+ self.Star
)
return DumpString
-class tagMCEquipPartSuiteLVInfo(Structure):
+class tagMCEquipPartStarInfo(Structure):
Head = tagHead()
Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCEquipPartSuiteLV> InfoList)// 信息列表
+ InfoList = list() #(vector<tagMCEquipPartStar> InfoList)// 信息列表
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x09
+ self.Head.SubCmd = 0xB1
return
def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -11362,7 +13714,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCEquipPartSuiteLV()
+ temInfoList = tagMCEquipPartStar()
_pos = temInfoList.ReadData(_lpData, _pos)
self.InfoList.append(temInfoList)
return _pos
@@ -11371,7 +13723,7 @@
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x09
+ self.Head.SubCmd = 0xB1
self.Count = 0
self.InfoList = list()
return
@@ -11407,8 +13759,8 @@
return DumpString
-m_NAtagMCEquipPartSuiteLVInfo=tagMCEquipPartSuiteLVInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteLVInfo.Head.Cmd,m_NAtagMCEquipPartSuiteLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteLVInfo
+m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
#------------------------------------------------------
@@ -11454,7 +13806,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,依次递增
@@ -11581,6 +13933,254 @@
m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
+
+
+#------------------------------------------------------
+# A3 07 缥缈奇遇信息 #tagMCFairyAdventuresInfo
+
+class tagMCFairyAdventuresData(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EventID", c_ubyte),
+ ("Gear", c_ubyte), #第几档
+ ("Condition", c_int), #条件
+ ]
+
+ 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.EventID = 0
+ self.Gear = 0
+ self.Condition = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFairyAdventuresData)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 07 缥缈奇遇信息 //tagMCFairyAdventuresInfo:
+ EventID:%d,
+ Gear:%d,
+ Condition:%d
+ '''\
+ %(
+ self.EventID,
+ self.Gear,
+ self.Condition
+ )
+ return DumpString
+
+
+class tagMCFairyAdventuresInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)
+ InfoList = list() #(vector<tagMCFairyAdventuresData> InfoList)// 信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x07
+ 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):
+ temInfoList = tagMCFairyAdventuresData()
+ _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 = 0x07
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFairyAdventuresInfo=tagMCFairyAdventuresInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyAdventuresInfo.Head.Cmd,m_NAtagMCFairyAdventuresInfo.Head.SubCmd))] = m_NAtagMCFairyAdventuresInfo
+
+
+#------------------------------------------------------
+# A3 06 缥缈仙域信息 #tagMCFairyDomainInfo
+
+class tagMCFairyDomainEvent(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EventID", c_ushort), #事件ID
+ ("EventState", c_ubyte), #事件状态 1-可拜访 2-拜访中 3-已拜访
+ ]
+
+ 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.EventID = 0
+ self.EventState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFairyDomainEvent)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 06 缥缈仙域信息 //tagMCFairyDomainInfo:
+ EventID:%d,
+ EventState:%d
+ '''\
+ %(
+ self.EventID,
+ self.EventState
+ )
+ return DumpString
+
+
+class tagMCFairyDomainInfo(Structure):
+ Head = tagHead()
+ IsAll = 0 #(BYTE IsAll)//是否全部
+ State = 0 #(BYTE State)//0-未寻访 1-寻访中 2-任务标记可寻访
+ VisitCnt = 0 #(DWORD VisitCnt)//寻访次数
+ Energy = 0 #(WORD Energy)//体力
+ Count = 0 #(BYTE Count)// 信息个数
+ InfoList = list() #(vector<tagMCFairyDomainEvent> InfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.VisitCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagMCFairyDomainEvent()
+ _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 = 0x06
+ self.IsAll = 0
+ self.State = 0
+ self.VisitCnt = 0
+ self.Energy = 0
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4
+ length += 2
+ length += 1
+ 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.WriteBYTE(data, self.IsAll)
+ data = CommFunc.WriteBYTE(data, self.State)
+ data = CommFunc.WriteDWORD(data, self.VisitCnt)
+ data = CommFunc.WriteWORD(data, self.Energy)
+ data = CommFunc.WriteBYTE(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,
+ IsAll:%d,
+ State:%d,
+ VisitCnt:%d,
+ Energy:%d,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IsAll,
+ self.State,
+ self.VisitCnt,
+ self.Energy,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFairyDomainInfo=tagMCFairyDomainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyDomainInfo.Head.Cmd,m_NAtagMCFairyDomainInfo.Head.SubCmd))] = m_NAtagMCFairyDomainInfo
#------------------------------------------------------
@@ -12577,73 +15177,6 @@
#------------------------------------------------------
-# A3 12 通知玩家法宝信息 #tagMCMagicWeaponData
-
-class tagMCMagicWeaponData(Structure):
- Head = tagHead()
- Num = 0 #(BYTE Num)//个数
- MagicWeaponID = list() #(vector<DWORD> MagicWeaponID)// 已激活的法宝ID列表
- 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):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.MagicWeaponID.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x12
- self.Num = 0
- self.MagicWeaponID = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4 * self.Num
-
- 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.WriteDWORD(data, self.MagicWeaponID[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Num:%d,
- MagicWeaponID:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Num,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCMagicWeaponData=tagMCMagicWeaponData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponData.Head.Cmd,m_NAtagMCMagicWeaponData.Head.SubCmd))] = m_NAtagMCMagicWeaponData
-
-
-#------------------------------------------------------
# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
class tagMCMagicWeaponInfo(Structure):
@@ -12652,7 +15185,6 @@
("MWID", c_int),
("LV", c_ubyte),
("Exp", c_int),
- ("State", c_ubyte), #是否点击法宝认主
("FBPassLV", c_ubyte), #副本关卡
("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝)
]
@@ -12670,7 +15202,6 @@
self.MWID = 0
self.LV = 0
self.Exp = 0
- self.State = 0
self.FBPassLV = 0
self.IsWear = 0
return
@@ -12686,7 +15217,6 @@
MWID:%d,
LV:%d,
Exp:%d,
- State:%d,
FBPassLV:%d,
IsWear:%d
'''\
@@ -12694,7 +15224,6 @@
self.MWID,
self.LV,
self.Exp,
- self.State,
self.FBPassLV,
self.IsWear
)
@@ -12765,114 +15294,6 @@
m_NAtagMCMagicWeaponLVInfo=tagMCMagicWeaponLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponLVInfo.Head.Cmd,m_NAtagMCMagicWeaponLVInfo.Head.SubCmd))] = m_NAtagMCMagicWeaponLVInfo
-
-
-#------------------------------------------------------
-# A3 BE 通知客户端法宝精炼等级 #tagMCMagicWeaponMsg
-
-class tagMCMagicWeaponLV(Structure):
- _pack_ = 1
- _fields_ = [
- ("MWID", c_int), # 法宝ID
- ("MWLV", 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.MWID = 0
- self.MWLV = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCMagicWeaponLV)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 BE 通知客户端法宝精炼等级 //tagMCMagicWeaponMsg:
- MWID:%d,
- MWLV:%d
- '''\
- %(
- self.MWID,
- self.MWLV
- )
- return DumpString
-
-
-class tagMCMagicWeaponMsg(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)// 法宝个数
- MWInfo = list() #(vector<tagMCMagicWeaponLV> MWInfo)//法宝信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xBE
- 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):
- temMWInfo = tagMCMagicWeaponLV()
- _pos = temMWInfo.ReadData(_lpData, _pos)
- self.MWInfo.append(temMWInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0xBE
- self.Count = 0
- self.MWInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.MWInfo[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.MWInfo[i].GetLength(), self.MWInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- MWInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCMagicWeaponMsg=tagMCMagicWeaponMsg()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponMsg.Head.Cmd,m_NAtagMCMagicWeaponMsg.Head.SubCmd))] = m_NAtagMCMagicWeaponMsg
#------------------------------------------------------
@@ -12996,15 +15417,16 @@
#------------------------------------------------------
-# A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
+# A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
-class tagMCEquipPartStarLV(Structure):
+class tagMCEquipPartPlusLV(Structure):
_pack_ = 1
_fields_ = [
("PackType", c_ubyte),
("EquipIndex", c_ubyte),
("EquipPartStarLV", c_ushort),
("Proficiency", c_int),
+ ("EvolveLV", c_ubyte),
]
def __init__(self):
@@ -13021,34 +15443,37 @@
self.EquipIndex = 0
self.EquipPartStarLV = 0
self.Proficiency = 0
+ self.EvolveLV = 0
return
def GetLength(self):
- return sizeof(tagMCEquipPartStarLV)
+ return sizeof(tagMCEquipPartPlusLV)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
+ DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
PackType:%d,
EquipIndex:%d,
EquipPartStarLV:%d,
- Proficiency:%d
+ Proficiency:%d,
+ EvolveLV:%d
'''\
%(
self.PackType,
self.EquipIndex,
self.EquipPartStarLV,
- self.Proficiency
+ self.Proficiency,
+ self.EvolveLV
)
return DumpString
-class tagMCEquipPartStarLVInfo(Structure):
+class tagMCEquipPartPlusInfo(Structure):
Head = tagHead()
Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
+ InfoList = list() #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
data = None
def __init__(self):
@@ -13062,7 +15487,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCEquipPartStarLV()
+ temInfoList = tagMCEquipPartPlusLV()
_pos = temInfoList.ReadData(_lpData, _pos)
self.InfoList.append(temInfoList)
return _pos
@@ -13107,8 +15532,8 @@
return DumpString
-m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
+m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
#------------------------------------------------------
@@ -13291,16 +15716,13 @@
#------------------------------------------------------
-# A3 53 法宝特权数据 #tagMCMWPrivilegeDataInfo
+# A3 25 NPC已攻击次数信息 #tagMCNPCAttackCountInfo
-class tagMCMWPrivilegeData(Structure):
+class tagMCNPCAttackCount(Structure):
_pack_ = 1
_fields_ = [
- ("PriID", c_int), # 特权ID
- ("State", c_ubyte), #激活状态
- ("CurValue", c_int), #当前总进度
- ("GotValue", c_int), #已领取进度
- ("ItemAwardState", c_ubyte), #物品奖励是否已领取
+ ("NPCID", c_int),
+ ("AttackCount", c_ubyte), #已攻击次数
]
def __init__(self):
@@ -13313,47 +15735,38 @@
return _pos + self.GetLength()
def Clear(self):
- self.PriID = 0
- self.State = 0
- self.CurValue = 0
- self.GotValue = 0
- self.ItemAwardState = 0
+ self.NPCID = 0
+ self.AttackCount = 0
return
def GetLength(self):
- return sizeof(tagMCMWPrivilegeData)
+ return sizeof(tagMCNPCAttackCount)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
- PriID:%d,
- State:%d,
- CurValue:%d,
- GotValue:%d,
- ItemAwardState:%d
+ DumpString = '''// A3 25 NPC已攻击次数信息 //tagMCNPCAttackCountInfo:
+ NPCID:%d,
+ AttackCount:%d
'''\
%(
- self.PriID,
- self.State,
- self.CurValue,
- self.GotValue,
- self.ItemAwardState
+ self.NPCID,
+ self.AttackCount
)
return DumpString
-class tagMCMWPrivilegeDataInfo(Structure):
+class tagMCNPCAttackCountInfo(Structure):
Head = tagHead()
- Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCMWPrivilegeData> InfoList)// 信息列表
+ Count = 0 #(BYTE Count)
+ NPCAttackCountList = list() #(vector<tagMCNPCAttackCount> NPCAttackCountList)
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x53
+ self.Head.SubCmd = 0x25
return
def ReadData(self, _lpData, _pos=0, _Len=0):
@@ -13361,18 +15774,18 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCMWPrivilegeData()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
+ temNPCAttackCountList = tagMCNPCAttackCount()
+ _pos = temNPCAttackCountList.ReadData(_lpData, _pos)
+ self.NPCAttackCountList.append(temNPCAttackCountList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x53
+ self.Head.SubCmd = 0x25
self.Count = 0
- self.InfoList = list()
+ self.NPCAttackCountList = list()
return
def GetLength(self):
@@ -13380,7 +15793,7 @@
length += self.Head.GetLength()
length += 1
for i in range(self.Count):
- length += self.InfoList[i].GetLength()
+ length += self.NPCAttackCountList[i].GetLength()
return length
@@ -13389,14 +15802,14 @@
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.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ data = CommFunc.WriteString(data, self.NPCAttackCountList[i].GetLength(), self.NPCAttackCountList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
Count:%d,
- InfoList:%s
+ NPCAttackCountList:%s
'''\
%(
self.Head.OutputString(),
@@ -13406,8 +15819,8 @@
return DumpString
-m_NAtagMCMWPrivilegeDataInfo=tagMCMWPrivilegeDataInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMWPrivilegeDataInfo.Head.Cmd,m_NAtagMCMWPrivilegeDataInfo.Head.SubCmd))] = m_NAtagMCMWPrivilegeDataInfo
+m_NAtagMCNPCAttackCountInfo=tagMCNPCAttackCountInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCAttackCountInfo.Head.Cmd,m_NAtagMCNPCAttackCountInfo.Head.SubCmd))] = m_NAtagMCNPCAttackCountInfo
#------------------------------------------------------
@@ -13600,7 +16013,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -14043,20 +16456,15 @@
#------------------------------------------------------
# A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg
-class tagMCPlayerStoveMsg(Structure):
+class tagMCPlayerStoveInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("StoveLV", c_ubyte), # 炼丹炉等级
- ("StoveExp", c_int), # 炼丹炉经验
- ("ItemID", c_int), # 合成物品id
+ ("AlchemyID", c_int), # 丹 ID
+ ("StartTime", c_int), # 开始炼的时间
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xBF
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -14065,39 +16473,120 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0xBF
- self.StoveLV = 0
- self.StoveExp = 0
- self.ItemID = 0
+ self.AlchemyID = 0
+ self.StartTime = 0
return
def GetLength(self):
- return sizeof(tagMCPlayerStoveMsg)
+ return sizeof(tagMCPlayerStoveInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
- Cmd:%s,
- SubCmd:%s,
- StoveLV:%d,
- StoveExp:%d,
- ItemID:%d
+ AlchemyID:%d,
+ StartTime:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.AlchemyID,
+ self.StartTime
+ )
+ return DumpString
+
+
+class tagMCPlayerStoveMsg(Structure):
+ Head = tagHead()
+ StoveLV = 0 #(BYTE StoveLV)// 炼丹炉等级
+ StoveExp = 0 #(DWORD StoveExp)// 炼丹炉经验
+ ItemID = 0 #(DWORD ItemID)// 合成物品id
+ ItemCnt = 0 #(BYTE ItemCnt)// 丹药数量
+ StoveCnt = 0 #(WORD StoveCnt)// 丹药数量
+ InfoList = list() #(vector<tagMCPlayerStoveInfo> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xBF
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.StoveCnt):
+ temInfoList = tagMCPlayerStoveInfo()
+ _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 = 0xBF
+ self.StoveLV = 0
+ self.StoveExp = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.StoveCnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ length += 2
+ for i in range(self.StoveCnt):
+ 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.StoveLV)
+ data = CommFunc.WriteDWORD(data, self.StoveExp)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteBYTE(data, self.ItemCnt)
+ data = CommFunc.WriteWORD(data, self.StoveCnt)
+ for i in range(self.StoveCnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StoveLV:%d,
+ StoveExp:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ StoveCnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
self.StoveLV,
self.StoveExp,
- self.ItemID
+ self.ItemID,
+ self.ItemCnt,
+ self.StoveCnt,
+ "..."
)
return DumpString
m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Head.Cmd,m_NAtagMCPlayerStoveMsg.Head.SubCmd))] = m_NAtagMCPlayerStoveMsg
#------------------------------------------------------
@@ -14154,6 +16643,74 @@
m_NAtagMCPrayElixirResult=tagMCPrayElixirResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult
+
+
+#------------------------------------------------------
+# A3 27 境界修为池信息 #tagMCRealmExpInfo
+
+class tagMCRealmExpInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("BeginTime", c_int), #开始计时时间
+ ("BuffTime", c_int), #buff剩余时间
+ ("BuffAddRate", c_int), #buff加成万分率
+ ("CurExp", c_int), #当前总经验
+ ("CurExpPoint", c_int), #当前总经验点
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x27
+ self.BeginTime = 0
+ self.BuffTime = 0
+ self.BuffAddRate = 0
+ self.CurExp = 0
+ self.CurExpPoint = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCRealmExpInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 27 境界修为池信息 //tagMCRealmExpInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ BeginTime:%d,
+ BuffTime:%d,
+ BuffAddRate:%d,
+ CurExp:%d,
+ CurExpPoint:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.BeginTime,
+ self.BuffTime,
+ self.BuffAddRate,
+ self.CurExp,
+ self.CurExpPoint
+ )
+ return DumpString
+
+
+m_NAtagMCRealmExpInfo=tagMCRealmExpInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRealmExpInfo.Cmd,m_NAtagMCRealmExpInfo.SubCmd))] = m_NAtagMCRealmExpInfo
#------------------------------------------------------
@@ -14404,6 +16961,178 @@
m_NAtagMCSingleGoldGift=tagMCSingleGoldGift()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSingleGoldGift.Cmd,m_NAtagMCSingleGoldGift.SubCmd))] = m_NAtagMCSingleGoldGift
+
+
+#------------------------------------------------------
+# A3 09 技能五行专精信息 #tagMCSkillElementInfo
+
+class tagMCSkillElementActiveData(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SkillID", c_int), # 技能ID
+ ("ActiveLV", 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.SkillID = 0
+ self.ActiveLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSkillElementActiveData)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo:
+ SkillID:%d,
+ ActiveLV:%d
+ '''\
+ %(
+ self.SkillID,
+ self.ActiveLV
+ )
+ return DumpString
+
+
+class tagMCSkillElementData(Structure):
+ MainSkillID = 0 #(DWORD MainSkillID)// 主技能ID
+ ElementSkillID = 0 #(DWORD ElementSkillID)// 选择的专精技能ID
+ SkillCnt = 0 #(BYTE SkillCnt)// 数量
+ ActiveSkill = list() #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkillCnt):
+ temActiveSkill = tagMCSkillElementActiveData()
+ _pos = temActiveSkill.ReadData(_lpData, _pos)
+ self.ActiveSkill.append(temActiveSkill)
+ return _pos
+
+ def Clear(self):
+ self.MainSkillID = 0
+ self.ElementSkillID = 0
+ self.SkillCnt = 0
+ self.ActiveSkill = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.SkillCnt):
+ length += self.ActiveSkill[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.MainSkillID)
+ data = CommFunc.WriteDWORD(data, self.ElementSkillID)
+ data = CommFunc.WriteBYTE(data, self.SkillCnt)
+ for i in range(self.SkillCnt):
+ data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ MainSkillID:%d,
+ ElementSkillID:%d,
+ SkillCnt:%d,
+ ActiveSkill:%s
+ '''\
+ %(
+ self.MainSkillID,
+ self.ElementSkillID,
+ self.SkillCnt,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCSkillElementInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)// 数量
+ InfoList = list() #(vector<tagMCSkillElementData> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x09
+ 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):
+ temInfoList = tagMCSkillElementData()
+ _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 = 0x09
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCSkillElementInfo=tagMCSkillElementInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkillElementInfo.Head.Cmd,m_NAtagMCSkillElementInfo.Head.SubCmd))] = m_NAtagMCSkillElementInfo
#------------------------------------------------------
@@ -15011,18 +17740,14 @@
#------------------------------------------------------
-# A3 11 通知玩家境界渡劫是否开启 #tagMCSyncRealmFBIsOpen
+# A3 11 通知玩家境界信息 #tagMCSyncRealmInfo
-class tagMCSyncRealmFBIsOpen(Structure):
+class tagMCSyncRealmInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("IsOpen", c_ubyte), #是否开启
- ("SitAllTime", c_ushort), #打坐总时间秒
- ("SitRemainTime", c_int), #开始打坐前剩余时间秒
- ("SitStartTime", c_int), #开始打坐时间
- ("LastEnterTime", c_int), #上次进入渡劫副本时间
+ ("IsPass", c_ubyte), #是否通关副本
]
def __init__(self):
@@ -15039,43 +17764,31 @@
def Clear(self):
self.Cmd = 0xA3
self.SubCmd = 0x11
- self.IsOpen = 0
- self.SitAllTime = 0
- self.SitRemainTime = 0
- self.SitStartTime = 0
- self.LastEnterTime = 0
+ self.IsPass = 0
return
def GetLength(self):
- return sizeof(tagMCSyncRealmFBIsOpen)
+ return sizeof(tagMCSyncRealmInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 11 通知玩家境界渡劫是否开启 //tagMCSyncRealmFBIsOpen:
+ DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
Cmd:%s,
SubCmd:%s,
- IsOpen:%d,
- SitAllTime:%d,
- SitRemainTime:%d,
- SitStartTime:%d,
- LastEnterTime:%d
+ IsPass:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.IsOpen,
- self.SitAllTime,
- self.SitRemainTime,
- self.SitStartTime,
- self.LastEnterTime
+ self.IsPass
)
return DumpString
-m_NAtagMCSyncRealmFBIsOpen=tagMCSyncRealmFBIsOpen()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmFBIsOpen.Cmd,m_NAtagMCSyncRealmFBIsOpen.SubCmd))] = m_NAtagMCSyncRealmFBIsOpen
+m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Cmd,m_NAtagMCSyncRealmInfo.SubCmd))] = m_NAtagMCSyncRealmInfo
#------------------------------------------------------
@@ -15981,74 +18694,6 @@
#------------------------------------------------------
-#A5 34 天梯竞技场状态#tagMCHighLadderState
-
-class tagMCHighLadderState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Count", c_ubyte), #已挑战次数
- ("MaxCount", c_ubyte), #最大次数
- ("CDTime", c_int), #累计冷却时间
- ("IsRelCD", c_ubyte), #是否正在真实冷却状态
- ("Currency", c_int), #积分
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x34
- 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 = 0x34
- self.Count = 0
- self.MaxCount = 0
- self.CDTime = 0
- self.IsRelCD = 0
- self.Currency = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCHighLadderState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 34 天梯竞技场状态//tagMCHighLadderState:
- Cmd:%s,
- SubCmd:%s,
- Count:%d,
- MaxCount:%d,
- CDTime:%d,
- IsRelCD:%d,
- Currency:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Count,
- self.MaxCount,
- self.CDTime,
- self.IsRelCD,
- self.Currency
- )
- return DumpString
-
-
-m_NAtagMCHighLadderState=tagMCHighLadderState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHighLadderState.Cmd,m_NAtagMCHighLadderState.SubCmd))] = m_NAtagMCHighLadderState
-
-
-#------------------------------------------------------
#A5 01 查看已申请加入的家族信息 #tagMCNotifyRequestJoinFamilyInfo
class tagRequestJoinFamily(Structure):
@@ -16783,6 +19428,125 @@
m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState
+
+
+#------------------------------------------------------
+# A7 18 采集奖励物品通知 #tagMCCollectAwardItemInfo
+
+class tagMCCollectAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Count", c_ubyte),
+ ("IsAuctionItem", 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.Count = 0
+ self.IsAuctionItem = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCollectAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 18 采集奖励物品通知 //tagMCCollectAwardItemInfo:
+ ItemID:%d,
+ Count:%d,
+ IsAuctionItem:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count,
+ self.IsAuctionItem
+ )
+ return DumpString
+
+
+class tagMCCollectAwardItemInfo(Structure):
+ Head = tagHead()
+ CollectNPCID = 0 #(DWORD CollectNPCID)//采集的NPCID
+ Count = 0 #(BYTE Count)
+ AwardItemList = list() #(vector<tagMCCollectAwardItem> AwardItemList)//奖励物品信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CollectNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCollectAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x18
+ self.CollectNPCID = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.CollectNPCID)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ CollectNPCID:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.CollectNPCID,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
#------------------------------------------------------
@@ -17826,6 +20590,84 @@
#------------------------------------------------------
+# A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
+
+class tagSCPlayerEquipCacheResult(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)//玩家ID
+ EquipClassLV = 0 #(BYTE EquipClassLV)
+ ItemDataSize = 0 #(WORD ItemDataSize)
+ ItemData = "" #(String ItemData)//物品记录
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x19
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemDataSize,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x19
+ self.PlayerID = 0
+ self.EquipClassLV = 0
+ self.ItemDataSize = 0
+ self.ItemData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 2
+ length += len(self.ItemData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.EquipClassLV)
+ data = CommFunc.WriteWORD(data, self.ItemDataSize)
+ data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ EquipClassLV:%d,
+ ItemDataSize:%d,
+ ItemData:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.EquipClassLV,
+ self.ItemDataSize,
+ self.ItemData
+ )
+ return DumpString
+
+
+m_NAtagSCPlayerEquipCacheResult=tagSCPlayerEquipCacheResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCPlayerEquipCacheResult.Head.Cmd,m_NAtagSCPlayerEquipCacheResult.Head.SubCmd))] = m_NAtagSCPlayerEquipCacheResult
+
+
+#------------------------------------------------------
# A7 07 通知玩家自定义聊天 #tagMCPyTalk
class tagMCPyTalk(Structure):
@@ -18054,7 +20896,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -18499,7 +21341,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
@@ -18605,6 +21447,117 @@
m_NAtagMCShoppingResult=tagMCShoppingResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShoppingResult.Cmd,m_NAtagMCShoppingResult.SubCmd))] = m_NAtagMCShoppingResult
+
+
+#------------------------------------------------------
+# A8 16 神秘商店商品信息 #tagMCMysticalShopInfo
+
+class tagMCMysticalShopGoods(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GoodsID", c_int), # 商品ID
+ ]
+
+ 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.GoodsID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMysticalShopGoods)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 16 神秘商店商品信息 //tagMCMysticalShopInfo:
+ GoodsID:%d
+ '''\
+ %(
+ self.GoodsID
+ )
+ return DumpString
+
+
+class tagMCMysticalShopInfo(Structure):
+ Head = tagHead()
+ RefreshCnt = 0 #(WORD RefreshCnt)// 刷新次数
+ Count = 0 #(BYTE Count)// 商品数
+ GoodsList = list() #(vector<tagMCMysticalShopGoods> GoodsList)// 商品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x16
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.RefreshCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temGoodsList = tagMCMysticalShopGoods()
+ _pos = temGoodsList.ReadData(_lpData, _pos)
+ self.GoodsList.append(temGoodsList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x16
+ self.RefreshCnt = 0
+ self.Count = 0
+ self.GoodsList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ for i in range(self.Count):
+ length += self.GoodsList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.RefreshCnt)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ RefreshCnt:%d,
+ Count:%d,
+ GoodsList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.RefreshCnt,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCMysticalShopInfo=tagMCMysticalShopInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMysticalShopInfo.Head.Cmd,m_NAtagMCMysticalShopInfo.Head.SubCmd))] = m_NAtagMCMysticalShopInfo
#------------------------------------------------------
@@ -18808,126 +21761,6 @@
#------------------------------------------------------
-# A8 04 通知商店限购物品已购买次数信息 # tagMCShopItemBuyCntInfoList
-
-class tagMCShopItemBuyCntInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("ShopID", c_int),
- ("ItemShopIndex", c_ushort),
- ("ItemID", c_int),
- ("BuyCnt", c_int), # 个人已购买数
- ("ServerBuyCnt", c_int), # 全服已购买数
- ]
-
- 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.ShopID = 0
- self.ItemShopIndex = 0
- self.ItemID = 0
- self.BuyCnt = 0
- self.ServerBuyCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCShopItemBuyCntInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 04 通知商店限购物品已购买次数信息 // tagMCShopItemBuyCntInfoList:
- ShopID:%d,
- ItemShopIndex:%d,
- ItemID:%d,
- BuyCnt:%d,
- ServerBuyCnt:%d
- '''\
- %(
- self.ShopID,
- self.ItemShopIndex,
- self.ItemID,
- self.BuyCnt,
- self.ServerBuyCnt
- )
- return DumpString
-
-
-class tagMCShopItemBuyCntInfoList(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//通知个数
- BuyCntList = list() #(vector<tagMCShopItemBuyCntInfo> BuyCntList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x04
- 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):
- temBuyCntList = tagMCShopItemBuyCntInfo()
- _pos = temBuyCntList.ReadData(_lpData, _pos)
- self.BuyCntList.append(temBuyCntList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x04
- self.Count = 0
- self.BuyCntList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.BuyCntList[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.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- BuyCntList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCShopItemBuyCntInfoList=tagMCShopItemBuyCntInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemBuyCntInfoList.Head.Cmd,m_NAtagMCShopItemBuyCntInfoList.Head.SubCmd))] = m_NAtagMCShopItemBuyCntInfoList
-
-
-#------------------------------------------------------
# A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
class tagMCShopItemDayBuyCnt(Structure):
@@ -19040,239 +21873,6 @@
#------------------------------------------------------
-# A8 03 通知自定义商店物品信息 #tagMCShopItemInfoList
-
-class tagMCShopItemInfo(Structure):
- ShopID = 0 #(DWORD ShopID)
- ItemShopIndex = 0 #(WORD ItemShopIndex)
- DataSize = 0 #(DWORD DataSize)
- ItemList = "" #(String ItemList)//物品列表[[物品ID,数量,是否绑定,是否定制]]
- PriceType = 0 #(BYTE PriceType)
- Price = 0 #(DWORD Price)
- OriginalPrice = 0 #(DWORD OriginalPrice)// 原价
- PlayerLVLimit = 0 #(WORD PlayerLVLimit)// 购买等级限制
- FamilyLVLimit = 0 #(BYTE FamilyLVLimit)// 购买战盟等级限制
- MaxBuyCnt = 0 #(DWORD MaxBuyCnt)// 个人限购数
- ServerMaxBuyCnt = 0 #(DWORD ServerMaxBuyCnt)// 全服限购数
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.ShopID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemShopIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemList,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
- self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Price,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.OriginalPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerLVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.FamilyLVLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ServerMaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.ShopID = 0
- self.ItemShopIndex = 0
- self.DataSize = 0
- self.ItemList = ""
- self.PriceType = 0
- self.Price = 0
- self.OriginalPrice = 0
- self.PlayerLVLimit = 0
- self.FamilyLVLimit = 0
- self.MaxBuyCnt = 0
- self.ServerMaxBuyCnt = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 2
- length += 4
- length += len(self.ItemList)
- length += 1
- length += 4
- length += 4
- length += 2
- length += 1
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.ShopID)
- data = CommFunc.WriteWORD(data, self.ItemShopIndex)
- data = CommFunc.WriteDWORD(data, self.DataSize)
- data = CommFunc.WriteString(data, self.DataSize, self.ItemList)
- data = CommFunc.WriteBYTE(data, self.PriceType)
- data = CommFunc.WriteDWORD(data, self.Price)
- data = CommFunc.WriteDWORD(data, self.OriginalPrice)
- data = CommFunc.WriteWORD(data, self.PlayerLVLimit)
- data = CommFunc.WriteBYTE(data, self.FamilyLVLimit)
- data = CommFunc.WriteDWORD(data, self.MaxBuyCnt)
- data = CommFunc.WriteDWORD(data, self.ServerMaxBuyCnt)
- return data
-
- def OutputString(self):
- DumpString = '''
- ShopID:%d,
- ItemShopIndex:%d,
- DataSize:%d,
- ItemList:%s,
- PriceType:%d,
- Price:%d,
- OriginalPrice:%d,
- PlayerLVLimit:%d,
- FamilyLVLimit:%d,
- MaxBuyCnt:%d,
- ServerMaxBuyCnt:%d
- '''\
- %(
- self.ShopID,
- self.ItemShopIndex,
- self.DataSize,
- self.ItemList,
- self.PriceType,
- self.Price,
- self.OriginalPrice,
- self.PlayerLVLimit,
- self.FamilyLVLimit,
- self.MaxBuyCnt,
- self.ServerMaxBuyCnt
- )
- return DumpString
-
-
-class tagMCShopItemInfoList(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//通知个数
- ShopItemList = list() #(vector<tagMCShopItemInfo> ShopItemList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x03
- 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):
- temShopItemList = tagMCShopItemInfo()
- _pos = temShopItemList.ReadData(_lpData, _pos)
- self.ShopItemList.append(temShopItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x03
- self.Count = 0
- self.ShopItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.ShopItemList[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.ShopItemList[i].GetLength(), self.ShopItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- ShopItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCShopItemInfoList=tagMCShopItemInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemInfoList.Head.Cmd,m_NAtagMCShopItemInfoList.Head.SubCmd))] = m_NAtagMCShopItemInfoList
-
-
-#------------------------------------------------------
-# A8 05 通知神秘商店刷新次数 #tagMCShopRefreshCnt
-
-class tagMCShopRefreshCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", c_int), #商店ID
- ("RefreshCnt", c_ushort), #已手动刷新次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA8
- self.SubCmd = 0x05
- 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 = 0x05
- self.ShopID = 0
- self.RefreshCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCShopRefreshCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 05 通知神秘商店刷新次数 //tagMCShopRefreshCnt:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d,
- RefreshCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID,
- self.RefreshCnt
- )
- return DumpString
-
-
-m_NAtagMCShopRefreshCnt=tagMCShopRefreshCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopRefreshCnt.Cmd,m_NAtagMCShopRefreshCnt.SubCmd))] = m_NAtagMCShopRefreshCnt
-
-
-#------------------------------------------------------
# A8 13 虚拟掉落物品 #tagMCVirtualItemDrop
class tagMCVirtualItemDrop(Structure):
@@ -19355,6 +21955,545 @@
m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
+
+
+#------------------------------------------------------
+# 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):
+ TemplateID = 0 #(DWORD TemplateID)// 模板ID
+ ActionType = 0 #(WORD ActionType)// 活动类别
+ TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
+ SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
+ Count = 0 #(WORD Count)// 物品配置长度
+ ItemInfo = "" #(String ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.ActionType = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.Count = 0
+ self.ItemInfo = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ItemInfo)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TemplateID)
+ data = CommFunc.WriteWORD(data, self.ActionType)
+ data = CommFunc.WriteDWORD(data, self.TotalTimes)
+ data = CommFunc.WriteDWORD(data, self.SingleTimes)
+ data = CommFunc.WriteWORD(data, self.Count)
+ data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ ActionType:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ Count:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.ActionType,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.Count,
+ self.ItemInfo
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardDayInfo(Structure):
+ ActCnt = 0 #(BYTE ActCnt)// 数量
+ TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
+ WorldLV = 0 #(WORD WorldLV)// 世界等级
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.TemplateList.append(value)
+ self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.ActCnt = 0
+ self.TemplateList = list()
+ self.WorldLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.ActCnt
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ActCnt)
+ for i in range(self.ActCnt):
+ data = CommFunc.WriteWORD(data, self.TemplateList[i])
+ data = CommFunc.WriteWORD(data, self.WorldLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ActCnt:%d,
+ TemplateList:%s,
+ WorldLV:%d
+ '''\
+ %(
+ self.ActCnt,
+ "...",
+ self.WorldLV
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCnt = 0 #(BYTE DayCnt)// 天数
+ DayInfoList = list() #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
+ TCount = 0 #(BYTE TCount)// 模板数
+ ActionInfo = list() #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0C
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCnt):
+ temDayInfoList = tagMCActLoginAwardDayInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TCount):
+ temActionInfo = tagMCActLoginAwardAction()
+ _pos = temActionInfo.ReadData(_lpData, _pos)
+ self.ActionInfo.append(temActionInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0C
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.DayCnt = 0
+ self.DayInfoList = list()
+ self.TCount = 0
+ self.ActionInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.DayCnt):
+ length += self.DayInfoList[i].GetLength()
+ length += 1
+ for i in range(self.TCount):
+ length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCnt)
+ for i in range(self.DayCnt):
+ data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TCount)
+ for i in range(self.TCount):
+ data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ DayCnt:%d,
+ DayInfoList:%s,
+ TCount:%d,
+ ActionInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.DayCnt,
+ "...",
+ self.TCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
+
+
+#------------------------------------------------------
+# AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
+
+class tagMCActLoginAwardTaskInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TemplateID", c_ushort), # 模板ID
+ ("CurTimes", c_ushort), #已完成次数
+ ("GotTimes", 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.TemplateID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActLoginAwardTaskInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
+ TemplateID:%d,
+ CurTimes:%d,
+ GotTimes:%d
+ '''\
+ %(
+ self.TemplateID,
+ self.CurTimes,
+ self.GotTimes
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardDayPlayerInfo(Structure):
+ DayIndex = 0 #(DWORD DayIndex)//第X天
+ ACount = 0 #(DWORD ACount)//任务条目数
+ TaskList = list() #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.ACount):
+ temTaskList = tagMCActLoginAwardTaskInfo()
+ _pos = temTaskList.ReadData(_lpData, _pos)
+ self.TaskList.append(temTaskList)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.ACount = 0
+ self.TaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ for i in range(self.ACount):
+ length += self.TaskList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.DayIndex)
+ data = CommFunc.WriteDWORD(data, self.ACount)
+ for i in range(self.ACount):
+ data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayIndex:%d,
+ ACount:%d,
+ TaskList:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.ACount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActLoginAwardPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ DayInfoList = list() #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0D
+ 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):
+ temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0D
+ self.Count = 0
+ self.DayInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DayInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
#------------------------------------------------------
@@ -20181,240 +23320,6 @@
#------------------------------------------------------
-# AA 03 升阶功能特惠奖励记录 #tagMCClassUPDayAwardRecordList
-
-class tagMCClassUPDayAwardRecord(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DayType", c_ubyte), # 奖励日类型
- ("Record", c_int), # 奖励记录
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x03
- 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 = 0x03
- self.DayType = 0
- self.Record = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCClassUPDayAwardRecord)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 03 升阶功能特惠奖励记录 //tagMCClassUPDayAwardRecordList:
- Cmd:%s,
- SubCmd:%s,
- DayType:%d,
- Record:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DayType,
- self.Record
- )
- return DumpString
-
-
-class tagMCClassUPDayAwardRecordList(Structure):
- Head = tagHead()
- RecordCount = 0 #(BYTE RecordCount)//记录个数
- RecordInfoList = list() #(vector<tagMCClassUPDayAwardRecord> RecordInfoList)//记录列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RecordCount):
- temRecordInfoList = tagMCClassUPDayAwardRecord()
- _pos = temRecordInfoList.ReadData(_lpData, _pos)
- self.RecordInfoList.append(temRecordInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x03
- self.RecordCount = 0
- self.RecordInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.RecordCount):
- length += self.RecordInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.RecordCount)
- for i in range(self.RecordCount):
- data = CommFunc.WriteString(data, self.RecordInfoList[i].GetLength(), self.RecordInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- RecordCount:%d,
- RecordInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.RecordCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCClassUPDayAwardRecordList=tagMCClassUPDayAwardRecordList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClassUPDayAwardRecordList.Head.Cmd,m_NAtagMCClassUPDayAwardRecordList.Head.SubCmd))] = m_NAtagMCClassUPDayAwardRecordList
-
-
-#------------------------------------------------------
-# AA 06 消费奖励信息 #tagMCCostProfitInfo
-
-class tagMCCostProfitInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("TotalCost", c_int), # 总消费
- ("AwardState", c_int), # 奖励领取状态
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x06
- self.ActionID = 0
- self.TotalCost = 0
- self.AwardState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCostProfitInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 06 消费奖励信息 //tagMCCostProfitInfo:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- TotalCost:%d,
- AwardState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.TotalCost,
- self.AwardState
- )
- return DumpString
-
-
-m_NAtagMCCostProfitInfo=tagMCCostProfitInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostProfitInfo.Cmd,m_NAtagMCCostProfitInfo.SubCmd))] = m_NAtagMCCostProfitInfo
-
-
-#------------------------------------------------------
-# AA 07 消费排行特惠信息 #tagMCCostRankTeHuiInfo
-
-class tagMCCostRankTeHuiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("TotalCost", c_int), # 总累计消费钻石
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x07
- self.ActionID = 0
- self.TotalCost = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCostRankTeHuiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 07 消费排行特惠信息 //tagMCCostRankTeHuiInfo:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- TotalCost:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.TotalCost
- )
- return DumpString
-
-
-m_NAtagMCCostRankTeHuiInfo=tagMCCostRankTeHuiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRankTeHuiInfo.Cmd,m_NAtagMCCostRankTeHuiInfo.SubCmd))] = m_NAtagMCCostRankTeHuiInfo
-
-
-#------------------------------------------------------
# AA 09 消费返利活动信息 #tagMCCostRebateInfo
class tagMCCostRebateAwardItem(Structure):
@@ -20722,6 +23627,518 @@
m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
+
+
+#------------------------------------------------------
+# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
+
+class tagMCFeastWeekPartyItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NeedPoint", c_ushort), # 领奖需要积分
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("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.NeedPoint = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastWeekPartyItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
+ NeedPoint:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.NeedPoint,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyAction(Structure):
+ TemplateID = 0 #(DWORD TemplateID)// 模板ID
+ ActionType = 0 #(WORD ActionType)// 活动类别
+ TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
+ SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
+ Point = 0 #(DWORD Point)// 单次领奖积分
+ Count = 0 #(BYTE Count)// 物品数
+ ItemInfo = list() #(vector<tagMCFeastWeekPartyItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temItemInfo = tagMCFeastWeekPartyItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.ActionType = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.Point = 0
+ self.Count = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TemplateID)
+ data = CommFunc.WriteWORD(data, self.ActionType)
+ data = CommFunc.WriteDWORD(data, self.TotalTimes)
+ data = CommFunc.WriteDWORD(data, self.SingleTimes)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ ActionType:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ Point:%d,
+ Count:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.ActionType,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.Point,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyDayInfo(Structure):
+ ActCnt = 0 #(BYTE ActCnt)// 数量
+ TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
+ PCount = 0 #(BYTE PCount)// 物品数
+ PItemInfo = list() #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.TemplateList.append(value)
+ self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PCount):
+ temPItemInfo = tagMCFeastWeekPartyItem()
+ _pos = temPItemInfo.ReadData(_lpData, _pos)
+ self.PItemInfo.append(temPItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.ActCnt = 0
+ self.TemplateList = list()
+ self.PCount = 0
+ self.PItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.ActCnt
+ length += 1
+ for i in range(self.PCount):
+ length += self.PItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ActCnt)
+ for i in range(self.ActCnt):
+ data = CommFunc.WriteWORD(data, self.TemplateList[i])
+ data = CommFunc.WriteBYTE(data, self.PCount)
+ for i in range(self.PCount):
+ data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ActCnt:%d,
+ TemplateList:%s,
+ PCount:%d,
+ PItemInfo:%s
+ '''\
+ %(
+ self.ActCnt,
+ "...",
+ self.PCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCnt = 0 #(BYTE DayCnt)// 天数
+ DayInfoList = list() #(vector<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
+ TCount = 0 #(BYTE TCount)// 模板数
+ ActionInfo = list() #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x20
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCnt):
+ temDayInfoList = tagMCFeastWeekPartyDayInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TCount):
+ temActionInfo = tagMCFeastWeekPartyAction()
+ _pos = temActionInfo.ReadData(_lpData, _pos)
+ self.ActionInfo.append(temActionInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x20
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.DayCnt = 0
+ self.DayInfoList = list()
+ self.TCount = 0
+ self.ActionInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.DayCnt):
+ length += self.DayInfoList[i].GetLength()
+ length += 1
+ for i in range(self.TCount):
+ length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCnt)
+ for i in range(self.DayCnt):
+ data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TCount)
+ for i in range(self.TCount):
+ data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ DayCnt:%d,
+ DayInfoList:%s,
+ TCount:%d,
+ ActionInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.DayCnt,
+ "...",
+ self.TCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
+
+
+#------------------------------------------------------
+# AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
+
+class tagMCFeastWeekPartyTaskInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TemplateID", c_ushort), # 模板ID
+ ("CurTimes", c_int), #已完成次数
+ ("GotTimes", c_int), #已领取次数
+ ]
+
+ 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.TemplateID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastWeekPartyTaskInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
+ TemplateID:%d,
+ CurTimes:%d,
+ GotTimes:%d
+ '''\
+ %(
+ self.TemplateID,
+ self.CurTimes,
+ self.GotTimes
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyDayPlayerInfo(Structure):
+ DayIndex = 0 #(DWORD DayIndex)//第X天
+ Point = 0 #(DWORD Point)//积分
+ AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
+ ACount = 0 #(DWORD ACount)//任务条目数
+ TaskList = list() #(vector<tagMCFeastWeekPartyTaskInfo> TaskList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.ACount):
+ temTaskList = tagMCFeastWeekPartyTaskInfo()
+ _pos = temTaskList.ReadData(_lpData, _pos)
+ self.TaskList.append(temTaskList)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.Point = 0
+ self.AwardRecord = 0
+ self.ACount = 0
+ self.TaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ for i in range(self.ACount):
+ length += self.TaskList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.DayIndex)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ data = CommFunc.WriteDWORD(data, self.ACount)
+ for i in range(self.ACount):
+ data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayIndex:%d,
+ Point:%d,
+ AwardRecord:%d,
+ ACount:%d,
+ TaskList:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.Point,
+ self.AwardRecord,
+ self.ACount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastWeekPartyPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ DayInfoList = list() #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x21
+ 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):
+ temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x21
+ self.Count = 0
+ self.DayInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DayInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
#------------------------------------------------------
@@ -21712,21 +25129,18 @@
#------------------------------------------------------
-# AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
+# AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
-class tagMCRechargeRankTeHuiInfo(Structure):
+class tagMCLuckyTreasureItem(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("TotalGold", c_int), # 总累计充值元宝
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("IsBind", c_ubyte), # 是否绑定
]
def __init__(self):
self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x05
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -21735,129 +25149,277 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xAA
- self.SubCmd = 0x05
- self.ActionID = 0
- self.TotalGold = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
return
def GetLength(self):
- return sizeof(tagMCRechargeRankTeHuiInfo)
+ return sizeof(tagMCLuckyTreasureItem)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AA 05 充值排行特惠信息 //tagMCRechargeRankTeHuiInfo:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- TotalGold:%d
+ DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo:
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.TotalGold
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
)
return DumpString
-m_NAtagMCRechargeRankTeHuiInfo=tagMCRechargeRankTeHuiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRankTeHuiInfo.Cmd,m_NAtagMCRechargeRankTeHuiInfo.SubCmd))] = m_NAtagMCRechargeRankTeHuiInfo
-
-
-#------------------------------------------------------
-# AA 04 充值特惠信息 #tagMCRechargeTeHuiInfoList
-
-class tagMCRechargeTeHuiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GotCnt", c_ubyte), # 已领取次数
- ("CanGetCnt", c_ubyte), # 当前可领取次数
- ("CurTotalGold", c_int), # 当前规则累计充值元宝-仅针对累充规则
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x04
- 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 = 0x04
- self.GotCnt = 0
- self.CanGetCnt = 0
- self.CurTotalGold = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCRechargeTeHuiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 04 充值特惠信息 //tagMCRechargeTeHuiInfoList:
- Cmd:%s,
- SubCmd:%s,
- GotCnt:%d,
- CanGetCnt:%d,
- CurTotalGold:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GotCnt,
- self.CanGetCnt,
- self.CurTotalGold
- )
- return DumpString
-
-
-class tagMCRechargeTeHuiInfoList(Structure):
+class tagMCLuckyTreasureInfo(Structure):
Head = tagHead()
- ActionID = 0 #(DWORD ActionID)// 活动ID
- TotalGold = 0 #(DWORD TotalGold)// 总累计充值元宝
- InfoCnt = 0 #(BYTE InfoCnt)// 信息个数
- InfoList = list() #(vector<tagMCRechargeTeHuiInfo> InfoList)// 信息列表
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ LuckyPoint = 0 #(WORD LuckyPoint)// 总幸运值
+ Count = 0 #(WORD Count)// 物品数
+ ItemList = list() #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x04
+ self.Head.SubCmd = 0x1F
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.ActionID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TotalGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.InfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.InfoCnt):
- temInfoList = tagMCRechargeTeHuiInfo()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temItemList = tagMCLuckyTreasureItem()
+ _pos = temItemList.ReadData(_lpData, _pos)
+ self.ItemList.append(temItemList)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x04
- self.ActionID = 0
- self.TotalGold = 0
- self.InfoCnt = 0
- self.InfoList = list()
+ self.Head.SubCmd = 0x1F
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.LuckyPoint = 0
+ self.Count = 0
+ self.ItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 2
+ length += 2
+ for i in range(self.Count):
+ length += self.ItemList[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.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteWORD(data, self.LuckyPoint)
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ LimitLV:%d,
+ LuckyPoint:%d,
+ Count:%d,
+ ItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.LimitLV,
+ self.LuckyPoint,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo
+
+
+#------------------------------------------------------
+# AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
+
+class tagMCLuckyTreasureResultInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LuckyPoint", c_ushort), # 当前幸运点
+ ("HasFree", c_ubyte), # 是否免费过
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), #物品数量
+ ("IsBind", c_ubyte), # 是否绑定
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x1E
+ 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 = 0x1E
+ self.LuckyPoint = 0
+ self.HasFree = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLuckyTreasureResultInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ LuckyPoint:%d,
+ HasFree:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LuckyPoint,
+ self.HasFree,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
+ )
+ return DumpString
+
+
+m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo
+
+
+#------------------------------------------------------
+# AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo
+
+class tagMCNewAllPeoplePartyCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ActID", c_int), #活动ID
+ ("CurTimes", 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.ActID = 0
+ self.CurTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNewAllPeoplePartyCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 23 新仙界盛典全民来嗨玩家信息 //tagMCNewAllPeoplePartyInfo:
+ ActID:%d,
+ CurTimes:%d
+ '''\
+ %(
+ self.ActID,
+ self.CurTimes
+ )
+ return DumpString
+
+
+class tagMCNewAllPeoplePartyInfo(Structure):
+ Head = tagHead()
+ CurPoint = 0 #(DWORD CurPoint)//当前总点数
+ AwardRecord = 0 #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
+ Count = 0 #(BYTE Count)
+ BuyCountList = list() #(vector<tagMCNewAllPeoplePartyCount> BuyCountList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x23
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temBuyCountList = tagMCNewAllPeoplePartyCount()
+ _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 = 0x23
+ self.CurPoint = 0
+ self.AwardRecord = 0
+ self.Count = 0
+ self.BuyCountList = list()
return
def GetLength(self):
@@ -21866,41 +25428,93 @@
length += 4
length += 4
length += 1
- for i in range(self.InfoCnt):
- length += self.InfoList[i].GetLength()
+ 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.WriteDWORD(data, self.ActionID)
- data = CommFunc.WriteDWORD(data, self.TotalGold)
- data = CommFunc.WriteBYTE(data, self.InfoCnt)
- for i in range(self.InfoCnt):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.CurPoint)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ 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,
- ActionID:%d,
- TotalGold:%d,
- InfoCnt:%d,
- InfoList:%s
+ CurPoint:%d,
+ AwardRecord:%d,
+ Count:%d,
+ BuyCountList:%s
'''\
%(
self.Head.OutputString(),
- self.ActionID,
- self.TotalGold,
- self.InfoCnt,
+ self.CurPoint,
+ self.AwardRecord,
+ self.Count,
"..."
)
return DumpString
-m_NAtagMCRechargeTeHuiInfoList=tagMCRechargeTeHuiInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeTeHuiInfoList.Head.Cmd,m_NAtagMCRechargeTeHuiInfoList.Head.SubCmd))] = m_NAtagMCRechargeTeHuiInfoList
+m_NAtagMCNewAllPeoplePartyInfo=tagMCNewAllPeoplePartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewAllPeoplePartyInfo.Head.Cmd,m_NAtagMCNewAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCNewAllPeoplePartyInfo
+
+
+#------------------------------------------------------
+# AA 22 新仙界盛典充值大礼 #tagMCNewXJSDRecharge
+
+class tagMCNewXJSDRecharge(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("State", c_ubyte), #0-不可领 1-可领 2-已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x22
+ 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 = 0x22
+ self.State = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNewXJSDRecharge)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 22 新仙界盛典充值大礼 //tagMCNewXJSDRecharge:
+ Cmd:%s,
+ SubCmd:%s,
+ State:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.State
+ )
+ return DumpString
+
+
+m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
#------------------------------------------------------
@@ -22418,6 +26032,518 @@
#------------------------------------------------------
+# AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
+
+class tagMCWeekPartyItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NeedPoint", c_ushort), # 领奖需要积分
+ ("ItemID", c_int), # 物品ID
+ ("ItemCnt", c_ushort), # 物品数量
+ ("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.NeedPoint = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCWeekPartyItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0A 周狂欢活动信息 //tagMCWeekPartyInfo:
+ NeedPoint:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.NeedPoint,
+ self.ItemID,
+ self.ItemCnt,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCWeekPartyAction(Structure):
+ TemplateID = 0 #(DWORD TemplateID)// 模板ID
+ ActionType = 0 #(WORD ActionType)// 活动类别
+ TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
+ SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
+ Point = 0 #(DWORD Point)// 单次领奖积分
+ Count = 0 #(BYTE Count)// 物品数
+ ItemInfo = list() #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temItemInfo = tagMCWeekPartyItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.TemplateID = 0
+ self.ActionType = 0
+ self.TotalTimes = 0
+ self.SingleTimes = 0
+ self.Point = 0
+ self.Count = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 2
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.TemplateID)
+ data = CommFunc.WriteWORD(data, self.ActionType)
+ data = CommFunc.WriteDWORD(data, self.TotalTimes)
+ data = CommFunc.WriteDWORD(data, self.SingleTimes)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ TemplateID:%d,
+ ActionType:%d,
+ TotalTimes:%d,
+ SingleTimes:%d,
+ Point:%d,
+ Count:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.TemplateID,
+ self.ActionType,
+ self.TotalTimes,
+ self.SingleTimes,
+ self.Point,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyDayInfo(Structure):
+ ActCnt = 0 #(BYTE ActCnt)// 数量
+ TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
+ PCount = 0 #(BYTE PCount)// 物品数
+ PItemInfo = list() #(vector<tagMCWeekPartyItem> PItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ActCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.TemplateList.append(value)
+ self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PCount):
+ temPItemInfo = tagMCWeekPartyItem()
+ _pos = temPItemInfo.ReadData(_lpData, _pos)
+ self.PItemInfo.append(temPItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.ActCnt = 0
+ self.TemplateList = list()
+ self.PCount = 0
+ self.PItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2 * self.ActCnt
+ length += 1
+ for i in range(self.PCount):
+ length += self.PItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ActCnt)
+ for i in range(self.ActCnt):
+ data = CommFunc.WriteWORD(data, self.TemplateList[i])
+ data = CommFunc.WriteBYTE(data, self.PCount)
+ for i in range(self.PCount):
+ data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ActCnt:%d,
+ TemplateList:%s,
+ PCount:%d,
+ PItemInfo:%s
+ '''\
+ %(
+ self.ActCnt,
+ "...",
+ self.PCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ DayCnt = 0 #(BYTE DayCnt)// 天数
+ DayInfoList = list() #(vector<tagMCWeekPartyDayInfo> DayInfoList)// 每天模板
+ TCount = 0 #(BYTE TCount)// 模板数
+ ActionInfo = list() #(vector<tagMCWeekPartyAction> ActionInfo)// 活动模板信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0A
+ 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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.DayCnt):
+ temDayInfoList = tagMCWeekPartyDayInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TCount):
+ temActionInfo = tagMCWeekPartyAction()
+ _pos = temActionInfo.ReadData(_lpData, _pos)
+ self.ActionInfo.append(temActionInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0A
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.AdvanceMinutes = 0
+ self.IsDayReset = 0
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.DayCnt = 0
+ self.DayInfoList = list()
+ self.TCount = 0
+ self.ActionInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.DayCnt):
+ length += self.DayInfoList[i].GetLength()
+ length += 1
+ for i in range(self.TCount):
+ length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.DayCnt)
+ for i in range(self.DayCnt):
+ data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TCount)
+ for i in range(self.TCount):
+ data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ AdvanceMinutes:%d,
+ IsDayReset:%d,
+ ResetType:%d,
+ LimitLV:%d,
+ DayCnt:%d,
+ DayInfoList:%s,
+ TCount:%d,
+ ActionInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.AdvanceMinutes,
+ self.IsDayReset,
+ self.ResetType,
+ self.LimitLV,
+ self.DayCnt,
+ "...",
+ self.TCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCWeekPartyInfo=tagMCWeekPartyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyInfo.Head.Cmd,m_NAtagMCWeekPartyInfo.Head.SubCmd))] = m_NAtagMCWeekPartyInfo
+
+
+#------------------------------------------------------
+# AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
+
+class tagMCWeekPartyTaskInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TemplateID", c_ushort), # 模板ID
+ ("CurTimes", c_int), #已完成次数
+ ("GotTimes", c_int), #已领取次数
+ ]
+
+ 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.TemplateID = 0
+ self.CurTimes = 0
+ self.GotTimes = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCWeekPartyTaskInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
+ TemplateID:%d,
+ CurTimes:%d,
+ GotTimes:%d
+ '''\
+ %(
+ self.TemplateID,
+ self.CurTimes,
+ self.GotTimes
+ )
+ return DumpString
+
+
+class tagMCWeekPartyDayPlayerInfo(Structure):
+ DayIndex = 0 #(DWORD DayIndex)//第X天
+ Point = 0 #(DWORD Point)//积分
+ AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
+ ACount = 0 #(DWORD ACount)//任务条目数
+ TaskList = list() #(vector<tagMCWeekPartyTaskInfo> TaskList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ for i in range(self.ACount):
+ temTaskList = tagMCWeekPartyTaskInfo()
+ _pos = temTaskList.ReadData(_lpData, _pos)
+ self.TaskList.append(temTaskList)
+ return _pos
+
+ def Clear(self):
+ self.DayIndex = 0
+ self.Point = 0
+ self.AwardRecord = 0
+ self.ACount = 0
+ self.TaskList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ for i in range(self.ACount):
+ length += self.TaskList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.DayIndex)
+ data = CommFunc.WriteDWORD(data, self.Point)
+ data = CommFunc.WriteDWORD(data, self.AwardRecord)
+ data = CommFunc.WriteDWORD(data, self.ACount)
+ for i in range(self.ACount):
+ data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ DayIndex:%d,
+ Point:%d,
+ AwardRecord:%d,
+ ACount:%d,
+ TaskList:%s
+ '''\
+ %(
+ self.DayIndex,
+ self.Point,
+ self.AwardRecord,
+ self.ACount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCWeekPartyPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0B
+ 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):
+ temDayInfoList = tagMCWeekPartyDayPlayerInfo()
+ _pos = temDayInfoList.ReadData(_lpData, _pos)
+ self.DayInfoList.append(temDayInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x0B
+ self.Count = 0
+ self.DayInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ DayInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCWeekPartyPlayerInfo=tagMCWeekPartyPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCWeekPartyPlayerInfo
+
+
+#------------------------------------------------------
# AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
class tagMCXJSDRecharge(Structure):
@@ -22579,310 +26705,6 @@
m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
-
-
-#------------------------------------------------------
-# AB 06 活动物品兑换次数记录 #tagMCExchangeActionItemCntRecord
-
-class tagMCExchangeActionItemCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemID", c_int),
- ("ExcCnt", c_int), # 已兑换次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x06
- self.ItemID = 0
- self.ExcCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCExchangeActionItemCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 06 活动物品兑换次数记录 //tagMCExchangeActionItemCntRecord:
- Cmd:%s,
- SubCmd:%s,
- ItemID:%d,
- ExcCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemID,
- self.ExcCnt
- )
- return DumpString
-
-
-class tagMCExchangeActionItemCntRecord(Structure):
- Head = tagHead()
- ActionKeyLen = 0 #(BYTE ActionKeyLen)
- ActionKey = "" #(String ActionKey)
- RecordCnt = 0 #(BYTE RecordCnt)
- RecordList = list() #(vector<tagMCExchangeActionItemCnt> RecordList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
- self.RecordCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RecordCnt):
- temRecordList = tagMCExchangeActionItemCnt()
- _pos = temRecordList.ReadData(_lpData, _pos)
- self.RecordList.append(temRecordList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- self.ActionKeyLen = 0
- self.ActionKey = ""
- self.RecordCnt = 0
- self.RecordList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.ActionKey)
- length += 1
- for i in range(self.RecordCnt):
- length += self.RecordList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
- data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
- data = CommFunc.WriteBYTE(data, self.RecordCnt)
- for i in range(self.RecordCnt):
- data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActionKeyLen:%d,
- ActionKey:%s,
- RecordCnt:%d,
- RecordList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActionKeyLen,
- self.ActionKey,
- self.RecordCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCExchangeActionItemCntRecord=tagMCExchangeActionItemCntRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeActionItemCntRecord.Head.Cmd,m_NAtagMCExchangeActionItemCntRecord.Head.SubCmd))] = m_NAtagMCExchangeActionItemCntRecord
-
-
-#------------------------------------------------------
-# AB 07 节日活动奖励状态 #tagMCFestivalLoginAwardState
-
-class tagMCFestivalLoginAwardState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FestivalType", c_ubyte), # 节日类型
- ("State", c_int), # 领取状态 <按位取值,0-未领取 1-可领取 2-已领取>
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x07
- self.FestivalType = 0
- self.State = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFestivalLoginAwardState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 07 节日活动奖励状态 //tagMCFestivalLoginAwardState:
- Cmd:%s,
- SubCmd:%s,
- FestivalType:%d,
- State:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FestivalType,
- self.State
- )
- return DumpString
-
-
-m_NAtagMCFestivalLoginAwardState=tagMCFestivalLoginAwardState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFestivalLoginAwardState.Cmd,m_NAtagMCFestivalLoginAwardState.SubCmd))] = m_NAtagMCFestivalLoginAwardState
-
-
-#------------------------------------------------------
-# AB 02 领地占领每日奖励领奖情况 #tagMCManorDailyAward
-
-class tagMCManorDailyAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("AwardRecord", c_int), # 按位表示每个领地领取情况;0-未领,1-已领
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x02
- self.AwardRecord = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCManorDailyAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 02 领地占领每日奖励领奖情况 //tagMCManorDailyAward:
- Cmd:%s,
- SubCmd:%s,
- AwardRecord:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.AwardRecord
- )
- return DumpString
-
-
-m_NAtagMCManorDailyAward=tagMCManorDailyAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorDailyAward.Cmd,m_NAtagMCManorDailyAward.SubCmd))] = m_NAtagMCManorDailyAward
-
-
-#------------------------------------------------------
-# AB 01 通知领地战结果 #tagMCManorWarResult
-
-class tagMCManorWarResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), # 0-普通信息;1-活动结果总结
- ("Result", c_ubyte), # 战盟胜负情况;0-未知,1-胜利,2-失败
- ("JoinTime", c_int), # 活动时总参与时间,毫秒
- ("JoinAward", c_ubyte), # 参与奖状态;0-不可领,1-可领,2-已领
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x01
- self.Type = 0
- self.Result = 0
- self.JoinTime = 0
- self.JoinAward = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCManorWarResult)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 01 通知领地战结果 //tagMCManorWarResult:
- Cmd:%s,
- SubCmd:%s,
- Type:%d,
- Result:%d,
- JoinTime:%d,
- JoinAward:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type,
- self.Result,
- self.JoinTime,
- self.JoinAward
- )
- return DumpString
-
-
-m_NAtagMCManorWarResult=tagMCManorWarResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult
#------------------------------------------------------
@@ -23146,6 +26968,62 @@
m_NAtagMCDiceAward=tagMCDiceAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceAward.Cmd,m_NAtagMCDiceAward.SubCmd))] = m_NAtagMCDiceAward
+
+
+#------------------------------------------------------
+# AB 25 节日红包信息 #tagMCFeastRedPackInfo
+
+class tagMCFeastRedPackInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MoneyNum", c_int), # 累积抢到多少钱
+ ("GrabCnt", c_ushort), # 已抢红包次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAB
+ self.SubCmd = 0x25
+ 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 = 0xAB
+ self.SubCmd = 0x25
+ self.MoneyNum = 0
+ self.GrabCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastRedPackInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ MoneyNum:%d,
+ GrabCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MoneyNum,
+ self.GrabCnt
+ )
+ return DumpString
+
+
+m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
#------------------------------------------------------
@@ -23970,17 +27848,12 @@
class tagMCClothesCoatLVInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
("CoatIndex", c_int), #时装索引
("CoatLV", c_ubyte), #时装等级
- ("CoatExp", c_int), #时装祝福值经验
]
def __init__(self):
self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x02
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -23989,11 +27862,8 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x02
self.CoatIndex = 0
self.CoatLV = 0
- self.CoatExp = 0
return
def GetLength(self):
@@ -24004,26 +27874,21 @@
def OutputString(self):
DumpString = '''// B1 02 玩家时装皮肤激活状态 //tagMCClothesCoatSkinState:
- Cmd:%s,
- SubCmd:%s,
CoatIndex:%d,
- CoatLV:%d,
- CoatExp:%d
+ CoatLV:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
self.CoatIndex,
- self.CoatLV,
- self.CoatExp
+ self.CoatLV
)
return DumpString
class tagMCClothesCoatSkinState(Structure):
Head = tagHead()
- SkinOpenState = 0 #(DWORD SkinOpenState)//时装激活状态, 按索引表示激活状态
- CoatNum = 0 #(BYTE CoatNum)//时装个数
+ CoatChestLV = 0 #(DWORD CoatChestLV)//时装柜等级
+ CoatChestExp = 0 #(DWORD CoatChestExp)//时装柜经验
+ CoatNum = 0 #(WORD CoatNum)//时装个数
CoatInfoList = list() #(vector<tagMCClothesCoatLVInfo> CoatInfoList)// 时装数据列表
data = None
@@ -24036,8 +27901,9 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.SkinOpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.CoatNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.CoatChestLV,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CoatChestExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.CoatNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.CoatNum):
temCoatInfoList = tagMCClothesCoatLVInfo()
_pos = temCoatInfoList.ReadData(_lpData, _pos)
@@ -24049,7 +27915,8 @@
self.Head.Clear()
self.Head.Cmd = 0xB1
self.Head.SubCmd = 0x02
- self.SkinOpenState = 0
+ self.CoatChestLV = 0
+ self.CoatChestExp = 0
self.CoatNum = 0
self.CoatInfoList = list()
return
@@ -24058,7 +27925,8 @@
length = 0
length += self.Head.GetLength()
length += 4
- length += 1
+ length += 4
+ length += 2
for i in range(self.CoatNum):
length += self.CoatInfoList[i].GetLength()
@@ -24067,8 +27935,9 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.SkinOpenState)
- data = CommFunc.WriteBYTE(data, self.CoatNum)
+ data = CommFunc.WriteDWORD(data, self.CoatChestLV)
+ data = CommFunc.WriteDWORD(data, self.CoatChestExp)
+ data = CommFunc.WriteWORD(data, self.CoatNum)
for i in range(self.CoatNum):
data = CommFunc.WriteString(data, self.CoatInfoList[i].GetLength(), self.CoatInfoList[i].GetBuffer())
return data
@@ -24076,13 +27945,15 @@
def OutputString(self):
DumpString = '''
Head:%s,
- SkinOpenState:%d,
+ CoatChestLV:%d,
+ CoatChestExp:%d,
CoatNum:%d,
CoatInfoList:%s
'''\
%(
self.Head.OutputString(),
- self.SkinOpenState,
+ self.CoatChestLV,
+ self.CoatChestExp,
self.CoatNum,
"..."
)
@@ -24203,6 +28074,83 @@
m_NAtagMCPlayerDeadTime=tagMCPlayerDeadTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerDeadTime.Cmd,m_NAtagMCPlayerDeadTime.SubCmd))] = m_NAtagMCPlayerDeadTime
+
+
+#------------------------------------------------------
+# B1 07 玩家点数信息 #tagMCRolePointInfo
+
+class tagMCRolePointInfo(Structure):
+ Head = tagHead()
+ PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 点类型个数
+ PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 点类型列表
+ PointValueList = list() #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.PointAttrIDList.append(value)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.PointValueList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB1
+ self.Head.SubCmd = 0x07
+ self.PointAttrIDCount = 0
+ self.PointAttrIDList = list()
+ self.PointValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.PointAttrIDCount
+ length += 2 * self.PointAttrIDCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
+ 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])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PointAttrIDCount:%d,
+ PointAttrIDList:%s,
+ PointValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PointAttrIDCount,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCRolePointInfo=tagMCRolePointInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRolePointInfo.Head.Cmd,m_NAtagMCRolePointInfo.Head.SubCmd))] = m_NAtagMCRolePointInfo
#------------------------------------------------------
@@ -24426,6 +28374,54 @@
#------------------------------------------------------
+#B1 08 开始印记流失时间 #tagMCYinjiStartTime
+
+class tagMCYinjiStartTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ 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
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCYinjiStartTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
+
+
+#------------------------------------------------------
# B2 08 获得仙缘币信息 #tagMCAddXianyuanCoinMsg
class tagMCAddXianyuanCoinMsg(Structure):
@@ -24543,6 +28539,87 @@
m_NAtagMCAddXianyuanCoinMsg=tagMCAddXianyuanCoinMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddXianyuanCoinMsg.Head.Cmd,m_NAtagMCAddXianyuanCoinMsg.Head.SubCmd))] = m_NAtagMCAddXianyuanCoinMsg
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -24727,6 +28804,118 @@
m_NAtagMCFamilyWarBillboard=tagMCFamilyWarBillboard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyWarBillboard.Head.Cmd,m_NAtagMCFamilyWarBillboard.Head.SubCmd))] = m_NAtagMCFamilyWarBillboard
+
+
+#------------------------------------------------------
+# B2 15 副本买buff信息通知 #tagMCFBBuyBuffInfo
+
+class tagMCFBBuyBuffTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("MapID", c_int),
+ ("MoneyCnt", c_ushort),
+ ("BuyTime", c_int),
+ ]
+
+ 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.MapID = 0
+ self.MoneyCnt = 0
+ self.BuyTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFBBuyBuffTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 15 副本买buff信息通知 //tagMCFBBuyBuffInfo:
+ MapID:%d,
+ MoneyCnt:%d,
+ BuyTime:%d
+ '''\
+ %(
+ self.MapID,
+ self.MoneyCnt,
+ self.BuyTime
+ )
+ return DumpString
+
+
+class tagMCFBBuyBuffInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)
+ InfoList = list() #(vector<tagMCFBBuyBuffTime> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ 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):
+ temInfoList = tagMCFBBuyBuffTime()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x15
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ 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.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFBBuyBuffInfo=tagMCFBBuyBuffInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBBuyBuffInfo.Head.Cmd,m_NAtagMCFBBuyBuffInfo.Head.SubCmd))] = m_NAtagMCFBBuyBuffInfo
#------------------------------------------------------
@@ -25568,6 +29757,58 @@
#------------------------------------------------------
+# B2 13 天星塔通关层数 #tagMCSkyTowerInfo
+
+class tagMCSkyTowerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Floor", c_int), # 已通关层
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x13
+ 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 = 0x13
+ self.Floor = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSkyTowerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ Floor:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Floor
+ )
+ return DumpString
+
+
+m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
+
+
+#------------------------------------------------------
#B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
class tagMCPushNotificationsSetting(Structure):
@@ -25636,6 +29877,58 @@
m_NAtagMCPushNotificationsSetting=tagMCPushNotificationsSetting()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPushNotificationsSetting.Head.Cmd,m_NAtagMCPushNotificationsSetting.Head.SubCmd))] = m_NAtagMCPushNotificationsSetting
+
+
+#------------------------------------------------------
+# B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt
+
+class tagMCZhuXianBossCnt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Cnt", c_ubyte), # 剩余可协助次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x12
+ 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 = 0x12
+ self.Cnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCZhuXianBossCnt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 12 诛仙BOSS协助次数 //tagMCZhuXianBossCnt:
+ Cmd:%s,
+ SubCmd:%s,
+ Cnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Cnt
+ )
+ return DumpString
+
+
+m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
#------------------------------------------------------
@@ -26002,6 +30295,70 @@
#------------------------------------------------------
+#B4 14 根据类型来决定移动的方式 #tagMCMoveByType
+
+class tagMCMoveByType(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ID", c_int), #玩家ID
+ ("PosX", c_ushort), # 目标X
+ ("PosY", c_ushort), # 目标Y
+ ("MoveType", c_ubyte), #移动方式
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ 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 = 0xB4
+ self.SubCmd = 0x14
+ self.ID = 0
+ self.PosX = 0
+ self.PosY = 0
+ self.MoveType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMoveByType)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B4 14 根据类型来决定移动的方式 //tagMCMoveByType:
+ Cmd:%s,
+ SubCmd:%s,
+ ID:%d,
+ PosX:%d,
+ PosY:%d,
+ MoveType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ID,
+ self.PosX,
+ self.PosY,
+ self.MoveType
+ )
+ return DumpString
+
+
+m_NAtagMCMoveByType=tagMCMoveByType()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMoveByType.Cmd,m_NAtagMCMoveByType.SubCmd))] = m_NAtagMCMoveByType
+
+
+#------------------------------------------------------
#B4 07 被动技能页选择(功法) # tagMCPassivePage
class tagMCPassivePage(Structure):
@@ -26228,6 +30585,118 @@
m_NAtagMCPassiveSetAnswer=tagMCPassiveSetAnswer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPassiveSetAnswer.Cmd,m_NAtagMCPassiveSetAnswer.SubCmd))] = m_NAtagMCPassiveSetAnswer
+
+
+#------------------------------------------------------
+# B4 13 通知玩家所有已学技能 #tagMCPlayerSkills
+
+class tagPlayerSkill(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SkillID", c_int), #技能ID
+ ("RemainTime", c_int), #剩余时间
+ ("Proficiency", c_int), #熟练度
+ ]
+
+ 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.SkillID = 0
+ self.RemainTime = 0
+ self.Proficiency = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagPlayerSkill)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 13 通知玩家所有已学技能 //tagMCPlayerSkills:
+ SkillID:%d,
+ RemainTime:%d,
+ Proficiency:%d
+ '''\
+ %(
+ self.SkillID,
+ self.RemainTime,
+ self.Proficiency
+ )
+ return DumpString
+
+
+class tagMCPlayerSkills(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)//技能个数
+ Skills = list() #(vector<tagPlayerSkill> Skills)// 技能数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x13
+ 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):
+ temSkills = tagPlayerSkill()
+ _pos = temSkills.ReadData(_lpData, _pos)
+ self.Skills.append(temSkills)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x13
+ self.Count = 0
+ self.Skills = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.Skills[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.Skills[i].GetLength(), self.Skills[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ Skills:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCPlayerSkills=tagMCPlayerSkills()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerSkills.Head.Cmd,m_NAtagMCPlayerSkills.Head.SubCmd))] = m_NAtagMCPlayerSkills
#------------------------------------------------------
@@ -26834,6 +31303,7 @@
("SeasonID", c_ushort), # 赛季ID
("Order", c_ushort), # 名次
("DanLV", c_ubyte), # 段位
+ ("Score", c_int), # 积分
("AwardLV", c_ubyte), # 赛季结算奖励等级,比如王者法宝的属性取该等级对应属性
]
@@ -26850,6 +31320,7 @@
self.SeasonID = 0
self.Order = 0
self.DanLV = 0
+ self.Score = 0
self.AwardLV = 0
return
@@ -26864,12 +31335,14 @@
SeasonID:%d,
Order:%d,
DanLV:%d,
+ Score:%d,
AwardLV:%d
'''\
%(
self.SeasonID,
self.Order,
self.DanLV,
+ self.Score,
self.AwardLV
)
return DumpString
@@ -26957,6 +31430,7 @@
("DayPKCount", c_ubyte), # 当日已PK次数
("DayWinCount", c_ubyte), # 当日已胜利次数
("DayBuyCount", c_ubyte), # 当日已购买次数
+ ("DayItemAddCount", c_ubyte), # 当日物品增加次数
]
def __init__(self):
@@ -26981,6 +31455,7 @@
self.DayPKCount = 0
self.DayWinCount = 0
self.DayBuyCount = 0
+ self.DayItemAddCount = 0
return
def GetLength(self):
@@ -27000,7 +31475,8 @@
CWinCount:%d,
DayPKCount:%d,
DayWinCount:%d,
- DayBuyCount:%d
+ DayBuyCount:%d,
+ DayItemAddCount:%d
'''\
%(
self.Cmd,
@@ -27012,10 +31488,159 @@
self.CWinCount,
self.DayPKCount,
self.DayWinCount,
- self.DayBuyCount
+ self.DayBuyCount,
+ self.DayItemAddCount
)
return DumpString
m_NAtagMCCrossRealmPKPlayerInfo=tagMCCrossRealmPKPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossRealmPKPlayerInfo.Cmd,m_NAtagMCCrossRealmPKPlayerInfo.SubCmd))] = m_NAtagMCCrossRealmPKPlayerInfo
+
+
+#------------------------------------------------------
+# C1 06 进入跨服服务器错误 #tagMCEnterCrossServerError
+
+class tagMCEnterCrossServerError(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x06
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCEnterCrossServerError)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 06 进入跨服服务器错误 //tagMCEnterCrossServerError:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCEnterCrossServerError=tagMCEnterCrossServerError()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEnterCrossServerError.Cmd,m_NAtagMCEnterCrossServerError.SubCmd))] = m_NAtagMCEnterCrossServerError
+
+
+#------------------------------------------------------
+# C1 04 准备进入跨服服务器 #tagMCPrepareEnterCrossServer
+
+class tagMCPrepareEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DataMapID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x04
+ 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 = 0xC1
+ self.SubCmd = 0x04
+ self.DataMapID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCPrepareEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 04 准备进入跨服服务器 //tagMCPrepareEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s,
+ DataMapID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DataMapID
+ )
+ return DumpString
+
+
+m_NAtagMCPrepareEnterCrossServer=tagMCPrepareEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrepareEnterCrossServer.Cmd,m_NAtagMCPrepareEnterCrossServer.SubCmd))] = m_NAtagMCPrepareEnterCrossServer
+
+
+#------------------------------------------------------
+# C1 05 开始进入跨服服务器 #tagMCStartEnterCrossServer
+
+class tagMCStartEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x05
+ 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 = 0xC1
+ self.SubCmd = 0x05
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCStartEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 05 开始进入跨服服务器 //tagMCStartEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCStartEnterCrossServer=tagMCStartEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
diff --git a/Tool/RobotTest/Protocol/PacketsSend.py b/Tool/RobotTest/Protocol/PacketsSend.py
index df74de3..1ae5f43 100644
--- a/Tool/RobotTest/Protocol/PacketsSend.py
+++ b/Tool/RobotTest/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):
@@ -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
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMCMD.Head.Cmd,m_NAtagCGMCMD.Head.SubCmd))] = m_NAtagCGMCMD
diff --git a/Tool/RobotTest/Protocol/PacketsSendPY.py b/Tool/RobotTest/Protocol/PacketsSendPY.py
index 14cdda3..a765658 100644
--- a/Tool/RobotTest/Protocol/PacketsSendPY.py
+++ b/Tool/RobotTest/Protocol/PacketsSendPY.py
@@ -104,60 +104,74 @@
# A0 04 查询副本功能线路人数 #tagCGGetFBLinePlayerCnt
class tagCGGetFBLinePlayerCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FBLineID", c_ubyte),
- ("IsAllLine", c_ubyte),
- ]
+ Head = tagHead()
+ MapID = 0 #(DWORD MapID)
+ LineCount = 0 #(BYTE LineCount)
+ LineIDList = list() #(vector<BYTE> LineIDList)//个数为0时代表查全部
+ data = None
def __init__(self):
self.Clear()
- self.Cmd = 0xA0
- self.SubCmd = 0x04
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x04
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.LineCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.LineIDList.append(value)
+ return _pos
def Clear(self):
- self.Cmd = 0xA0
- self.SubCmd = 0x04
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA0
+ self.Head.SubCmd = 0x04
self.MapID = 0
- self.FBLineID = 0
- self.IsAllLine = 0
+ self.LineCount = 0
+ self.LineIDList = list()
return
def GetLength(self):
- return sizeof(tagCGGetFBLinePlayerCnt)
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 1 * self.LineCount
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteBYTE(data, self.LineCount)
+ for i in range(self.LineCount):
+ data = CommFunc.WriteBYTE(data, self.LineIDList[i])
+ return data
def OutputString(self):
- DumpString = '''// A0 04 查询副本功能线路人数 //tagCGGetFBLinePlayerCnt:
- Cmd:%s,
- SubCmd:%s,
+ DumpString = '''
+ Head:%s,
MapID:%d,
- FBLineID:%d,
- IsAllLine:%d
+ LineCount:%d,
+ LineIDList:%s
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.Head.OutputString(),
self.MapID,
- self.FBLineID,
- self.IsAllLine
+ self.LineCount,
+ "..."
)
return DumpString
m_NAtagCGGetFBLinePlayerCnt=tagCGGetFBLinePlayerCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Cmd,m_NAtagCGGetFBLinePlayerCnt.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetFBLinePlayerCnt.Head.Cmd,m_NAtagCGGetFBLinePlayerCnt.Head.SubCmd))] = m_NAtagCGGetFBLinePlayerCnt
#------------------------------------------------------
@@ -1349,6 +1363,63 @@
#------------------------------------------------------
+# A9 05 查询广播装备详细信息 #tagCGQueryNotifyEquipDetailInfo
+
+class tagCGQueryNotifyEquipDetailInfo(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ 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 = 0xA9
+ self.Head.SubCmd = 0x05
+ 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_NAtagCGQueryNotifyEquipDetailInfo=tagCGQueryNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryNotifyEquipDetailInfo.Head.Cmd,m_NAtagCGQueryNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagCGQueryNotifyEquipDetailInfo
+
+
+#------------------------------------------------------
# A9 A3 查看推荐好友 #tagCGQueryRecommendFriends
class tagCGQueryRecommendFriends(Structure):
@@ -1785,58 +1856,6 @@
#------------------------------------------------------
-# AD 01 查询特惠活动信息 #tagCGQueryTeHuiActivetyInfo
-
-class tagCGQueryTeHuiActivetyInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActivityType", c_ubyte), # 活动类型
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAD
- 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 = 0xAD
- self.SubCmd = 0x01
- self.ActivityType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGQueryTeHuiActivetyInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AD 01 查询特惠活动信息 //tagCGQueryTeHuiActivetyInfo:
- Cmd:%s,
- SubCmd:%s,
- ActivityType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActivityType
- )
- return DumpString
-
-
-m_NAtagCGQueryTeHuiActivetyInfo=tagCGQueryTeHuiActivetyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeHuiActivetyInfo.Cmd,m_NAtagCGQueryTeHuiActivetyInfo.SubCmd))] = m_NAtagCGQueryTeHuiActivetyInfo
-
-
-#------------------------------------------------------
# AE 07 运镖时间倒计时结束 #tagCGTruckTimeEnd
class tagCGTruckTimeEnd(Structure):
@@ -2209,7 +2228,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才发名称
@@ -2356,6 +2375,62 @@
#------------------------------------------------------
+# B5 18 拍卖行修改关注物品 #tagCGAttentionAuctionItemChange
+
+class tagCGAttentionAuctionItemChange(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int),
+ ("IsAttention", c_ubyte), #是否关注,取消关注发0
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ 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 = 0xB5
+ self.SubCmd = 0x18
+ self.ItemID = 0
+ self.IsAttention = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGAttentionAuctionItemChange)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 18 拍卖行修改关注物品 //tagCGAttentionAuctionItemChange:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d,
+ IsAttention:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID,
+ self.IsAttention
+ )
+ return DumpString
+
+
+m_NAtagCGAttentionAuctionItemChange=tagCGAttentionAuctionItemChange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionAuctionItemChange.Cmd,m_NAtagCGAttentionAuctionItemChange.SubCmd))] = m_NAtagCGAttentionAuctionItemChange
+
+
+#------------------------------------------------------
# B5 03 交易所查询上架物品#tagCGPYQueryBourseItemOnSale
class tagCGPYQueryBourseItemOnSale(Structure):
@@ -2424,6 +2499,289 @@
m_NAtagCGPYQueryBourseItemOnSale=tagCGPYQueryBourseItemOnSale()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPYQueryBourseItemOnSale.Head.Cmd,m_NAtagCGPYQueryBourseItemOnSale.Head.SubCmd))] = m_NAtagCGPYQueryBourseItemOnSale
+
+
+#------------------------------------------------------
+# B5 16 拍卖行查询关注中的拍品 #tagCGQueryAttentionAuctionItem
+
+class tagCGQueryAttentionAuctionItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ 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 = 0xB5
+ self.SubCmd = 0x16
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryAttentionAuctionItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 16 拍卖行查询关注中的拍品 //tagCGQueryAttentionAuctionItem:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGQueryAttentionAuctionItem=tagCGQueryAttentionAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAttentionAuctionItem.Cmd,m_NAtagCGQueryAttentionAuctionItem.SubCmd))] = m_NAtagCGQueryAttentionAuctionItem
+
+
+#------------------------------------------------------
+# B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem
+
+class tagCGQueryAuctionItem(Structure):
+ Head = tagHead()
+ Job = 0 #(BYTE Job)//过滤职业,0为不限制
+ ItemTypeCount = 0 #(BYTE ItemTypeCount)
+ ItemTypeList = list() #(vector<DWORD> ItemTypeList)//指定的物品类型
+ ClassLV = 0 #(BYTE ClassLV)//过滤阶数,0为不限制
+ SpecItemIDCount = 0 #(BYTE SpecItemIDCount)//指定物品ID个数
+ SpecItemIDList = list() #(vector<DWORD> SpecItemIDList)//指定物品ID
+ FromItemGUID = "" #(char FromItemGUID[40])//从哪个物品开始查询
+ QueryDir = 0 #(BYTE QueryDir)//查询方向,1-往后查,2-往前查
+ QueryCount = 0 #(BYTE QueryCount)//查询个数,0为全部
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemTypeCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ItemTypeList.append(value)
+ self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SpecItemIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SpecItemIDList.append(value)
+ self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x10
+ self.Job = 0
+ self.ItemTypeCount = 0
+ self.ItemTypeList = list()
+ self.ClassLV = 0
+ self.SpecItemIDCount = 0
+ self.SpecItemIDList = list()
+ self.FromItemGUID = ""
+ self.QueryDir = 0
+ self.QueryCount = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4 * self.ItemTypeCount
+ length += 1
+ length += 1
+ length += 4 * self.SpecItemIDCount
+ length += 40
+ length += 1
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
+ for i in range(self.ItemTypeCount):
+ data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
+ data = CommFunc.WriteBYTE(data, self.ClassLV)
+ data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
+ for i in range(self.SpecItemIDCount):
+ data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
+ data = CommFunc.WriteString(data, 40, self.FromItemGUID)
+ data = CommFunc.WriteBYTE(data, self.QueryDir)
+ data = CommFunc.WriteBYTE(data, self.QueryCount)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Job:%d,
+ ItemTypeCount:%d,
+ ItemTypeList:%s,
+ ClassLV:%d,
+ SpecItemIDCount:%d,
+ SpecItemIDList:%s,
+ FromItemGUID:%s,
+ QueryDir:%d,
+ QueryCount:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Job,
+ self.ItemTypeCount,
+ "...",
+ self.ClassLV,
+ self.SpecItemIDCount,
+ "...",
+ self.FromItemGUID,
+ self.QueryDir,
+ self.QueryCount
+ )
+ return DumpString
+
+
+m_NAtagCGQueryAuctionItem=tagCGQueryAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Head.Cmd,m_NAtagCGQueryAuctionItem.Head.SubCmd))] = m_NAtagCGQueryAuctionItem
+
+
+#------------------------------------------------------
+# B5 12 拍卖行查询拍卖记录 #tagCGQueryAuctionRecord
+
+class tagCGQueryAuctionRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RecordType", c_ubyte), #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ self.SubCmd = 0x12
+ 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 = 0x12
+ self.RecordType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGQueryAuctionRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord:
+ Cmd:%s,
+ SubCmd:%s,
+ RecordType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RecordType
+ )
+ return DumpString
+
+
+m_NAtagCGQueryAuctionRecord=tagCGQueryAuctionRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionRecord.Cmd,m_NAtagCGQueryAuctionRecord.SubCmd))] = m_NAtagCGQueryAuctionRecord
+
+
+#------------------------------------------------------
+# B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem
+
+class tagCGQueryTagAuctionItem(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ ItemID = 0 #(DWORD ItemID)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x17
+ 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)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x17
+ self.ItemGUID = ""
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID,
+ self.ItemID
+ )
+ return DumpString
+
+
+m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem
#------------------------------------------------------
@@ -2983,6 +3341,54 @@
#------------------------------------------------------
+# C0 03 强制退出跨服状态 #tagCGForceQuitCrossState
+
+class tagCGForceQuitCrossState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC0
+ self.SubCmd = 0x03
+ 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 = 0xC0
+ self.SubCmd = 0x03
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGForceQuitCrossState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C0 03 强制退出跨服状态 //tagCGForceQuitCrossState:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCGForceQuitCrossState=tagCGForceQuitCrossState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGForceQuitCrossState.Cmd,m_NAtagCGForceQuitCrossState.SubCmd))] = m_NAtagCGForceQuitCrossState
+
+
+#------------------------------------------------------
# C0 01 查看跨服竞技场赛季排行榜 #tagCGViewCrossPKBillboard
class tagCGViewCrossPKBillboard(Structure):
@@ -2990,8 +3396,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):
@@ -3047,6 +3453,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int), # 跨服玩家ID
+ ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息
]
def __init__(self):
@@ -3064,6 +3471,7 @@
self.Cmd = 0xC0
self.SubCmd = 0x02
self.PlayerID = 0
+ self.EquipClassLV = 0
return
def GetLength(self):
@@ -3076,12 +3484,14 @@
DumpString = '''// C0 02 查看跨服玩家信息 //tagCGViewCrossPlayerInfo:
Cmd:%s,
SubCmd:%s,
- PlayerID:%d
+ PlayerID:%d,
+ EquipClassLV:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.PlayerID
+ self.PlayerID,
+ self.EquipClassLV
)
return DumpString
@@ -3208,6 +3618,54 @@
m_NAtagCMPCInfo=tagCMPCInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPCInfo.Head.Cmd,m_NAtagCMPCInfo.Head.SubCmd))] = m_NAtagCMPCInfo
+
+
+#------------------------------------------------------
+# A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
+
+class tagCMRefreshMainServerRole(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA1
+ 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 = 0xA1
+ self.SubCmd = 0x08
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRefreshMainServerRole)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A1 08 刷新主服角色信息 //tagCMRefreshMainServerRole:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMRefreshMainServerRole=tagCMRefreshMainServerRole()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMainServerRole.Cmd,m_NAtagCMRefreshMainServerRole.SubCmd))] = m_NAtagCMRefreshMainServerRole
#------------------------------------------------------
@@ -3564,66 +4022,6 @@
#------------------------------------------------------
-# A2 08 购买自定义商店物品 #tagCMBuyShopItem
-
-class tagCMBuyShopItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", c_int),
- ("ItemShopIndex", c_ushort),
- ("BuyCount", c_ushort), #购买数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA2
- 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 = 0xA2
- self.SubCmd = 0x08
- self.ShopID = 0
- self.ItemShopIndex = 0
- self.BuyCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyShopItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 08 购买自定义商店物品 //tagCMBuyShopItem:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d,
- ItemShopIndex:%d,
- BuyCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID,
- self.ItemShopIndex,
- self.BuyCount
- )
- return DumpString
-
-
-m_NAtagCMBuyShopItem=tagCMBuyShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyShopItem.Cmd,m_NAtagCMBuyShopItem.SubCmd))] = m_NAtagCMBuyShopItem
-
-
-#------------------------------------------------------
# A2 10 清除副本CD#tagCMClearFBCD
class tagCMClearFBCD(Structure):
@@ -3676,6 +4074,110 @@
#------------------------------------------------------
+# A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
+
+class tagCMClientExitCustomScene(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x33
+ 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 = 0x33
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMClientExitCustomScene)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 33 前端退出自定义场景 //tagCMClientExitCustomScene:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMClientExitCustomScene=tagCMClientExitCustomScene()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientExitCustomScene.Cmd,m_NAtagCMClientExitCustomScene.SubCmd))] = m_NAtagCMClientExitCustomScene
+
+
+#------------------------------------------------------
+# A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
+
+class tagCMClientStartCustomScene(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("FuncLineID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ 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 = 0xA2
+ self.SubCmd = 0x31
+ self.MapID = 0
+ self.FuncLineID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMClientStartCustomScene)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ FuncLineID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.FuncLineID
+ )
+ return DumpString
+
+
+m_NAtagCMClientStartCustomScene=tagCMClientStartCustomScene()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartCustomScene.Cmd,m_NAtagCMClientStartCustomScene.SubCmd))] = m_NAtagCMClientStartCustomScene
+
+
+#------------------------------------------------------
# A2 24 触碰NPC #tagCMTouchNPC
class tagCMTouchNPC(Structure):
@@ -3725,6 +4227,58 @@
m_NAtagCMTouchNPC=tagCMTouchNPC()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC
+
+
+#------------------------------------------------------
+# A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
+
+class tagCMGetCustomSceneCollectAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("NPCID", c_int), #采集的NPCID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x34
+ 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 = 0x34
+ self.NPCID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMGetCustomSceneCollectAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward:
+ Cmd:%s,
+ SubCmd:%s,
+ NPCID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.NPCID
+ )
+ return DumpString
+
+
+m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward
#------------------------------------------------------
@@ -4558,58 +5112,6 @@
#------------------------------------------------------
-# A2 07 请求自定义商店物品信息 #tagCMQueryShopItem
-
-class tagCMQueryShopItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ShopID", 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.ShopID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMQueryShopItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 07 请求自定义商店物品信息 //tagCMQueryShopItem:
- Cmd:%s,
- SubCmd:%s,
- ShopID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ShopID
- )
- return DumpString
-
-
-m_NAtagCMQueryShopItem=tagCMQueryShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryShopItem.Cmd,m_NAtagCMQueryShopItem.SubCmd))] = m_NAtagCMQueryShopItem
-
-
-#------------------------------------------------------
# A2 06 快速完成任务#tagCMQuickFinishMission
class tagCMQuickFinishMission(Structure):
@@ -4666,20 +5168,19 @@
#------------------------------------------------------
-# A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem
+# A2 32 神秘商店刷新 #tagCMRefreshMysticalShop
-class tagCMRefreshShopItem(Structure):
+class tagCMRefreshMysticalShop(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ShopID", c_int),
]
def __init__(self):
self.Clear()
self.Cmd = 0xA2
- self.SubCmd = 0x14
+ self.SubCmd = 0x32
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -4689,32 +5190,29 @@
def Clear(self):
self.Cmd = 0xA2
- self.SubCmd = 0x14
- self.ShopID = 0
+ self.SubCmd = 0x32
return
def GetLength(self):
- return sizeof(tagCMRefreshShopItem)
+ return sizeof(tagCMRefreshMysticalShop)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem:
+ DumpString = '''// A2 32 神秘商店刷新 //tagCMRefreshMysticalShop:
Cmd:%s,
- SubCmd:%s,
- ShopID:%d
+ SubCmd:%s
'''\
%(
self.Cmd,
- self.SubCmd,
- self.ShopID
+ self.SubCmd
)
return DumpString
-m_NAtagCMRefreshShopItem=tagCMRefreshShopItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem
+m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop
#------------------------------------------------------
@@ -5169,6 +5667,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
+ ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息
]
def __init__(self):
@@ -5186,6 +5685,7 @@
self.Cmd = 0xA2
self.SubCmd = 0x12
self.PlayerID = 0
+ self.EquipClassLV = 0
return
def GetLength(self):
@@ -5198,18 +5698,72 @@
DumpString = '''//A2 12 查看玩家详细信息//tagCMViewPlayerInfo:
Cmd:%s,
SubCmd:%s,
- PlayerID:%d
+ PlayerID:%d,
+ EquipClassLV:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.PlayerID
+ self.PlayerID,
+ self.EquipClassLV
)
return DumpString
m_NAtagCMViewPlayerInfo=tagCMViewPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMViewPlayerInfo.Cmd,m_NAtagCMViewPlayerInfo.SubCmd))] = m_NAtagCMViewPlayerInfo
+
+
+#------------------------------------------------------
+# A3 17 增加果实使用上限 #tagCMAddFruitUseLimit
+
+class tagCMAddFruitUseLimit(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int), #果实物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x17
+ 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 = 0x17
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMAddFruitUseLimit)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 17 增加果实使用上限 //tagCMAddFruitUseLimit:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID
+ )
+ return DumpString
+
+
+m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit
#------------------------------------------------------
@@ -5399,7 +5953,7 @@
("SrcBackpack", c_ubyte), #源背包类型
("DesBackPack", c_ubyte), #目标背包类型
("SrcIndex", c_ushort), #转移物品索引位置;当全部转移时此值无效
- ("IsAll", c_ubyte), #是否全部转移
+ ("IsAll", c_ubyte), #是否全部转移
]
def __init__(self):
@@ -5713,6 +6267,58 @@
#------------------------------------------------------
+# A3 16 装备强化进化 #tagCMEquipPlusEvolve
+
+class tagCMEquipPlusEvolve(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemIndex", c_ushort), #装备在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x16
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEquipPlusEvolve)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
+
+
+#------------------------------------------------------
#A3 05 宝石摘取 #tagCMEquipStonePick
class tagCMEquipStonePick(Structure):
@@ -5993,6 +6599,62 @@
#------------------------------------------------------
+# 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):
@@ -6109,6 +6771,62 @@
m_NAtagCMItemDecompound=tagCMItemDecompound()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemDecompound.Cmd,m_NAtagCMItemDecompound.SubCmd))] = m_NAtagCMItemDecompound
+
+
+#------------------------------------------------------
+# A3 08 物品过期 #tagCMItemTimeout
+
+class tagCMItemTimeout(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PackType", c_ubyte), #背包类型
+ ("ItemIndex", c_ubyte), #物品在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ 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 = 0xA3
+ self.SubCmd = 0x08
+ self.PackType = 0
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMItemTimeout)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 08 物品过期 //tagCMItemTimeout:
+ Cmd:%s,
+ SubCmd:%s,
+ PackType:%d,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PackType,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMItemTimeout=tagCMItemTimeout()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
#------------------------------------------------------
@@ -6395,118 +7113,6 @@
#------------------------------------------------------
-#A3 17 套装合成#tagCMSuitCompose
-
-class tagCMSuitCompose(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SuiteType", c_ubyte), # 套装类型 1普通 2强化
- ("EquipPlace", c_ubyte), # 装备位置
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x17
- 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 = 0x17
- self.SuiteType = 0
- self.EquipPlace = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSuitCompose)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 17 套装合成//tagCMSuitCompose:
- Cmd:%s,
- SubCmd:%s,
- SuiteType:%d,
- EquipPlace:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SuiteType,
- self.EquipPlace
- )
- return DumpString
-
-
-m_NAtagCMSuitCompose=tagCMSuitCompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuitCompose.Cmd,m_NAtagCMSuitCompose.SubCmd))] = m_NAtagCMSuitCompose
-
-
-#------------------------------------------------------
-# A3 08 套装拆解 #tagCMSuiteDecompose
-
-class tagCMSuiteDecompose(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EquipPlace", c_ubyte), #部位索引
- ("SuiteType", c_ubyte), #套装类型 0代表全部类型
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- 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 = 0xA3
- self.SubCmd = 0x08
- self.EquipPlace = 0
- self.SuiteType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSuiteDecompose)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 08 套装拆解 //tagCMSuiteDecompose:
- Cmd:%s,
- SubCmd:%s,
- EquipPlace:%d,
- SuiteType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EquipPlace,
- self.SuiteType
- )
- return DumpString
-
-
-m_NAtagCMSuiteDecompose=tagCMSuiteDecompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuiteDecompose.Cmd,m_NAtagCMSuiteDecompose.SubCmd))] = m_NAtagCMSuiteDecompose
-
-
-#------------------------------------------------------
#A3 20 将魔方背包中的物品转移到人物背包中 #tagCMMagicItemPutInItemPack
class tagCMMagicItemPutInItemPack(Structure):
@@ -6637,70 +7243,6 @@
#------------------------------------------------------
-#A3 21 使用特殊运营物品 #tagCMUseSpecialItem
-
-class tagCMUseSpecialItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SpeicalItemType", c_ubyte), #特殊运营物品类型,0打折卡,1多选礼包
- ("ItemID", c_int), #物品ID
- ("ItemIndex", c_ubyte), #物品在背包中的索引位置
- ("Select", c_ubyte), #选择,只对多选礼包有用
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x21
- 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 = 0x21
- self.SpeicalItemType = 0
- self.ItemID = 0
- self.ItemIndex = 0
- self.Select = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUseSpecialItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A3 21 使用特殊运营物品 //tagCMUseSpecialItem:
- Cmd:%s,
- SubCmd:%s,
- SpeicalItemType:%d,
- ItemID:%d,
- ItemIndex:%d,
- Select:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SpeicalItemType,
- self.ItemID,
- self.ItemIndex,
- self.Select
- )
- return DumpString
-
-
-m_NAtagCMUseSpecialItem=tagCMUseSpecialItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSpecialItem.Cmd,m_NAtagCMUseSpecialItem.SubCmd))] = m_NAtagCMUseSpecialItem
-
-
-#------------------------------------------------------
# A3 2F 宗门试炼兑换 #tagCMTrialExchange
class tagCMTrialExchange(Structure):
@@ -6750,6 +7292,58 @@
m_NAtagCMTrialExchange=tagCMTrialExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTrialExchange.Cmd,m_NAtagCMTrialExchange.SubCmd))] = m_NAtagCMTrialExchange
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -6932,6 +7526,90 @@
#------------------------------------------------------
+# 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):
@@ -6981,66 +7659,6 @@
m_NAtagCMBuySomething=tagCMBuySomething()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuySomething.Cmd,m_NAtagCMBuySomething.SubCmd))] = m_NAtagCMBuySomething
-
-
-#------------------------------------------------------
-# A5 32 购买商城物品 #tagCMBuyStoreItem
-
-class tagCMBuyStoreItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), #1钻石,2绑定钻石,3银子,4银票
- ("ItemID", c_int), #物品ID
- ("BuyCount", c_ushort), #购买数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x32
- 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 = 0x32
- self.Type = 0
- self.ItemID = 0
- self.BuyCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyStoreItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 32 购买商城物品 //tagCMBuyStoreItem:
- Cmd:%s,
- SubCmd:%s,
- Type:%d,
- ItemID:%d,
- BuyCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type,
- self.ItemID,
- self.BuyCount
- )
- return DumpString
-
-
-m_NAtagCMBuyStoreItem=tagCMBuyStoreItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyStoreItem.Cmd,m_NAtagCMBuyStoreItem.SubCmd))] = m_NAtagCMBuyStoreItem
#------------------------------------------------------
@@ -7149,58 +7767,6 @@
m_NAtagCMActiveAllEquipAttr=tagCMActiveAllEquipAttr()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveAllEquipAttr.Cmd,m_NAtagCMActiveAllEquipAttr.SubCmd))] = m_NAtagCMActiveAllEquipAttr
-
-
-#------------------------------------------------------
-# A5 12 激活法宝之魂 #tagCMActiveMWSoul
-
-class tagCMActiveMWSoul(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ID", c_ubyte), #编号
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x12
- 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 = 0x12
- self.ID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMActiveMWSoul)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 12 激活法宝之魂 //tagCMActiveMWSoul:
- Cmd:%s,
- SubCmd:%s,
- ID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ID
- )
- return DumpString
-
-
-m_NAtagCMActiveMWSoul=tagCMActiveMWSoul()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActiveMWSoul.Cmd,m_NAtagCMActiveMWSoul.SubCmd))] = m_NAtagCMActiveMWSoul
#------------------------------------------------------
@@ -7671,6 +8237,62 @@
#------------------------------------------------------
+# A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
+
+class tagCMBuyDailyActionCnt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActionID", c_int), # ID
+ ("AddType", c_ubyte), # 0-花仙玉 1-用物品
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x25
+ 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 = 0x25
+ self.ActionID = 0
+ self.AddType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMBuyDailyActionCnt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 25 购买日常活动次数 //tagCMBuyDailyActionCnt:
+ Cmd:%s,
+ SubCmd:%s,
+ ActionID:%d,
+ AddType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActionID,
+ self.AddType
+ )
+ return DumpString
+
+
+m_NAtagCMBuyDailyActionCnt=tagCMBuyDailyActionCnt()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyDailyActionCnt.Cmd,m_NAtagCMBuyDailyActionCnt.SubCmd))] = m_NAtagCMBuyDailyActionCnt
+
+
+#------------------------------------------------------
#A5 75 购买副本进入次数#tagCMBuyEnterCount
class tagCMBuyEnterCount(Structure):
@@ -7820,106 +8442,6 @@
m_NAtagCMBuyKillBossCnt=tagCMBuyKillBossCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyKillBossCnt.Cmd,m_NAtagCMBuyKillBossCnt.SubCmd))] = m_NAtagCMBuyKillBossCnt
-
-
-#------------------------------------------------------
-#A5 36 天梯清除挑战CD#tagCMHighLadderClearCD
-
-class tagCMHighLadderClearCD(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x36
- 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 = 0x36
- return
-
- def GetLength(self):
- return sizeof(tagCMHighLadderClearCD)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 36 天梯清除挑战CD//tagCMHighLadderClearCD:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMHighLadderClearCD=tagCMHighLadderClearCD()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderClearCD.Cmd,m_NAtagCMHighLadderClearCD.SubCmd))] = m_NAtagCMHighLadderClearCD
-
-
-#------------------------------------------------------
-#A5 35 查询天梯竞技场奖励#tagCMQueryHighLadderReward
-
-class tagCMQueryHighLadderReward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Type", c_ubyte), #0,查询 1,领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x35
- 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 = 0x35
- self.Type = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMQueryHighLadderReward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 35 查询天梯竞技场奖励//tagCMQueryHighLadderReward:
- Cmd:%s,
- SubCmd:%s,
- Type:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Type
- )
- return DumpString
-
-
-m_NAtagCMQueryHighLadderReward=tagCMQueryHighLadderReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderReward.Cmd,m_NAtagCMQueryHighLadderReward.SubCmd))] = m_NAtagCMQueryHighLadderReward
#------------------------------------------------------
@@ -8128,6 +8650,83 @@
#------------------------------------------------------
+# A5 20 时装分解 #tagCMCoatDecompose
+
+class tagCMCoatDecompose(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 = 0xA5
+ self.Head.SubCmd = 0x20
+ 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 = 0xA5
+ self.Head.SubCmd = 0x20
+ 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_NAtagCMCoatDecompose=tagCMCoatDecompose()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCoatDecompose.Head.Cmd,m_NAtagCMCoatDecompose.Head.SubCmd))] = m_NAtagCMCoatDecompose
+
+
+#------------------------------------------------------
# A5 0B 玩家时装升级 #tagCMCoatUp
class tagCMCoatUp(Structure):
@@ -8135,7 +8734,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("CoatIndex", c_ubyte), # 时装索引
+ ("CoatIndex", c_int), # 时装索引
]
def __init__(self):
@@ -8669,6 +9268,90 @@
#------------------------------------------------------
+# A5 C5 装备部位升星 #tagCMEquipPartStarUp
+
+class tagCMEquipPartStarUp(Structure):
+ Head = tagHead()
+ EquipPackIndex = 0 #(WORD EquipPackIndex)// 部位格子索引
+ CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数
+ CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引
+ CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.CostEquipIndex.append(value)
+ for i in range(self.CostEquipCnt):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.CostEquipID.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0xC5
+ self.EquipPackIndex = 0
+ self.CostEquipCnt = 0
+ self.CostEquipIndex = list()
+ self.CostEquipID = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ length += 1
+ length += 2 * self.CostEquipCnt
+ length += 4 * self.CostEquipCnt
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.EquipPackIndex)
+ data = CommFunc.WriteBYTE(data, self.CostEquipCnt)
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
+ for i in range(self.CostEquipCnt):
+ data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipPackIndex:%d,
+ CostEquipCnt:%d,
+ CostEquipIndex:%s,
+ CostEquipID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipPackIndex,
+ self.CostEquipCnt,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
+
+
+#------------------------------------------------------
# A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
class tagCMExchangeMasterEXP(Structure):
@@ -8722,62 +9405,6 @@
m_NAtagCMExchangeMasterEXP=tagCMExchangeMasterEXP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeMasterEXP.Cmd,m_NAtagCMExchangeMasterEXP.SubCmd))] = m_NAtagCMExchangeMasterEXP
-
-
-#------------------------------------------------------
-# A5 46 兑换灵力 #tagCMExchangeReiki
-
-class tagCMExchangeReiki(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ExType", c_ubyte), #兑换类型0-降级兑换; 1-钻石购买
- ("ExData", c_ubyte), #兑换扩展数据(钻石购买可发送购买的消耗索引)
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x46
- 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 = 0x46
- self.ExType = 0
- self.ExData = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMExchangeReiki)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 46 兑换灵力 //tagCMExchangeReiki:
- Cmd:%s,
- SubCmd:%s,
- ExType:%d,
- ExData:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ExType,
- self.ExData
- )
- return DumpString
-
-
-m_NAtagCMExchangeReiki=tagCMExchangeReiki()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeReiki.Cmd,m_NAtagCMExchangeReiki.SubCmd))] = m_NAtagCMExchangeReiki
#------------------------------------------------------
@@ -9327,54 +9954,6 @@
#------------------------------------------------------
-#A5 37 天梯增加挑战次数#tagCMHighLadderAddCount
-
-class tagCMHighLadderAddCount(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x37
- 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 = 0x37
- return
-
- def GetLength(self):
- return sizeof(tagCMHighLadderAddCount)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 37 天梯增加挑战次数//tagCMHighLadderAddCount:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMHighLadderAddCount=tagCMHighLadderAddCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHighLadderAddCount.Cmd,m_NAtagCMHighLadderAddCount.SubCmd))] = m_NAtagCMHighLadderAddCount
-
-
-#------------------------------------------------------
# A5 27 坐骑提升 #tagCMHorseUp
class tagCMHorseUp(Structure):
@@ -9435,114 +10014,6 @@
#------------------------------------------------------
-# A5 0D 升级法宝技能 #tagCMMagicWeaponSkillUp
-
-class tagCMMagicWeaponSkillUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SkillTypeID", c_ushort),
- ("CostIndex", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x0D
- self.SkillTypeID = 0
- self.CostIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMagicWeaponSkillUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 0D 升级法宝技能 //tagCMMagicWeaponSkillUp:
- Cmd:%s,
- SubCmd:%s,
- SkillTypeID:%d,
- CostIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SkillTypeID,
- self.CostIndex
- )
- return DumpString
-
-
-m_NAtagCMMagicWeaponSkillUp=tagCMMagicWeaponSkillUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponSkillUp.Cmd,m_NAtagCMMagicWeaponSkillUp.SubCmd))] = m_NAtagCMMagicWeaponSkillUp
-
-
-#------------------------------------------------------
-# A5 16 法宝状态记录 #tagCMMagicWeaponState
-
-class tagCMMagicWeaponState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MWID", c_int), #法宝ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x16
- self.MWID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMagicWeaponState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 16 法宝状态记录 //tagCMMagicWeaponState:
- Cmd:%s,
- SubCmd:%s,
- MWID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MWID
- )
- return DumpString
-
-
-m_NAtagCMMagicWeaponState=tagCMMagicWeaponState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponState.Cmd,m_NAtagCMMagicWeaponState.SubCmd))] = m_NAtagCMMagicWeaponState
-
-
-#------------------------------------------------------
# A5 15 提升法宝等级 #tagCMMagicWeaponUp
class tagCMMagicWeaponUp(Structure):
@@ -9592,62 +10063,6 @@
m_NAtagCMMagicWeaponUp=tagCMMagicWeaponUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponUp.Cmd,m_NAtagCMMagicWeaponUp.SubCmd))] = m_NAtagCMMagicWeaponUp
-
-
-#------------------------------------------------------
-# A5 77 玩家精炼法宝 #tagCMMWRefine
-
-class tagCMMWRefine(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MWID", c_int), # 法宝ID
- ("MaterialID", c_int), #材料ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x77
- 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 = 0x77
- self.MWID = 0
- self.MaterialID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMWRefine)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 77 玩家精炼法宝 //tagCMMWRefine:
- Cmd:%s,
- SubCmd:%s,
- MWID:%d,
- MaterialID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MWID,
- self.MaterialID
- )
- return DumpString
-
-
-m_NAtagCMMWRefine=tagCMMWRefine()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMWRefine.Cmd,m_NAtagCMMWRefine.SubCmd))] = m_NAtagCMMWRefine
#------------------------------------------------------
@@ -9888,8 +10303,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("RefineNum", c_ushort), # 配方编号
- ("UseRateItem", c_int), # 附加材料ID
+ ("AlchemyID", c_int), # 丹药ID
+ ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
]
def __init__(self):
@@ -9906,8 +10321,8 @@
def Clear(self):
self.Cmd = 0xA5
self.SubCmd = 0x76
- self.RefineNum = 0
- self.UseRateItem = 0
+ self.AlchemyID = 0
+ self.DoType = 0
return
def GetLength(self):
@@ -9920,14 +10335,14 @@
DumpString = '''// A5 76 玩家炼丹 //tagCMPlayerRefine:
Cmd:%s,
SubCmd:%s,
- RefineNum:%d,
- UseRateItem:%d
+ AlchemyID:%d,
+ DoType:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.RefineNum,
- self.UseRateItem
+ self.AlchemyID,
+ self.DoType
)
return DumpString
@@ -9982,54 +10397,6 @@
m_NAtagCMPrayElixir=tagCMPrayElixir()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPrayElixir.Cmd,m_NAtagCMPrayElixir.SubCmd))] = m_NAtagCMPrayElixir
-
-
-#------------------------------------------------------
-#A5 34 查询天梯竞技场状态#tagCMQueryHighLadderState
-
-class tagCMQueryHighLadderState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x34
- 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 = 0x34
- return
-
- def GetLength(self):
- return sizeof(tagCMQueryHighLadderState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 34 查询天梯竞技场状态//tagCMQueryHighLadderState:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMQueryHighLadderState=tagCMQueryHighLadderState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryHighLadderState.Cmd,m_NAtagCMQueryHighLadderState.SubCmd))] = m_NAtagCMQueryHighLadderState
#------------------------------------------------------
@@ -10213,58 +10580,6 @@
#------------------------------------------------------
-# A5 0C 使用道具减少渡劫打坐时间 #tagCMReduceSitTime
-
-class tagCMReduceSitTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemCnt", c_ushort), # 道具数量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x0C
- 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 = 0x0C
- self.ItemCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMReduceSitTime)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 0C 使用道具减少渡劫打坐时间 //tagCMReduceSitTime:
- Cmd:%s,
- SubCmd:%s,
- ItemCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemCnt
- )
- return DumpString
-
-
-m_NAtagCMReduceSitTime=tagCMReduceSitTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReduceSitTime.Cmd,m_NAtagCMReduceSitTime.SubCmd))] = m_NAtagCMReduceSitTime
-
-
-#------------------------------------------------------
# A5 74 刷新悬赏任务 #tagCMRefreshArrestTask
class tagCMRefreshArrestTask(Structure):
@@ -10362,54 +10677,6 @@
m_NAtagCMRefreshTreasureFreeCnt=tagCMRefreshTreasureFreeCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshTreasureFreeCnt.Cmd,m_NAtagCMRefreshTreasureFreeCnt.SubCmd))] = m_NAtagCMRefreshTreasureFreeCnt
-
-
-#------------------------------------------------------
-# A5 47 玩家转生 #tagCMReincarnation
-
-class tagCMReincarnation(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x47
- 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 = 0x47
- return
-
- def GetLength(self):
- return sizeof(tagCMReincarnation)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 47 玩家转生 //tagCMReincarnation:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMReincarnation=tagCMReincarnation()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMReincarnation.Cmd,m_NAtagCMReincarnation.SubCmd))] = m_NAtagCMReincarnation
#------------------------------------------------------
@@ -10790,6 +11057,58 @@
#------------------------------------------------------
+# A5 16 选择技能五行专精 #tagCMSelectSkillElement
+
+class tagCMSelectSkillElement(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("SkillTypeID", c_int), # 专精技能ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ 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 = 0xA5
+ self.SubCmd = 0x16
+ self.SkillTypeID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSelectSkillElement)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement:
+ Cmd:%s,
+ SubCmd:%s,
+ SkillTypeID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.SkillTypeID
+ )
+ return DumpString
+
+
+m_NAtagCMSelectSkillElement=tagCMSelectSkillElement()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSelectSkillElement.Cmd,m_NAtagCMSelectSkillElement.SubCmd))] = m_NAtagCMSelectSkillElement
+
+
+#------------------------------------------------------
# A5 17 绑玉转盘开始 #tagCMStartBindJadeWheel
class tagCMStartBindJadeWheel(Structure):
@@ -10835,6 +11154,106 @@
m_NAtagCMStartBindJadeWheel=tagCMStartBindJadeWheel()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartBindJadeWheel.Cmd,m_NAtagCMStartBindJadeWheel.SubCmd))] = m_NAtagCMStartBindJadeWheel
+
+
+#------------------------------------------------------
+# A5 21 境界修为池提取 #tagCMTakeOutRealmExp
+
+class tagCMTakeOutRealmExp(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x21
+ 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 = 0x21
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTakeOutRealmExp)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 21 境界修为池提取 //tagCMTakeOutRealmExp:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMTakeOutRealmExp=tagCMTakeOutRealmExp()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeOutRealmExp.Cmd,m_NAtagCMTakeOutRealmExp.SubCmd))] = m_NAtagCMTakeOutRealmExp
+
+
+#------------------------------------------------------
+# A5 12 感应法宝 #tagCMThinkMagicWeapon
+
+class tagCMThinkMagicWeapon(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MWID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x12
+ 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 = 0x12
+ self.MWID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMThinkMagicWeapon)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 12 感应法宝 //tagCMThinkMagicWeapon:
+ Cmd:%s,
+ SubCmd:%s,
+ MWID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MWID
+ )
+ return DumpString
+
+
+m_NAtagCMThinkMagicWeapon=tagCMThinkMagicWeapon()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMThinkMagicWeapon.Cmd,m_NAtagCMThinkMagicWeapon.SubCmd))] = m_NAtagCMThinkMagicWeapon
#------------------------------------------------------
@@ -11051,6 +11470,58 @@
m_NAtagUseNewGuyCard=tagUseNewGuyCard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUseNewGuyCard.Head.Cmd,m_NAtagUseNewGuyCard.Head.SubCmd))] = m_NAtagUseNewGuyCard
+
+
+#------------------------------------------------------
+# A5 26 寻访仙域 #tagCMVisitFairyDomain
+
+class tagCMVisitFairyDomain(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ubyte), #0-开始寻访 1-结束寻访
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x26
+ 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 = 0x26
+ self.Type = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMVisitFairyDomain)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 26 寻访仙域 //tagCMVisitFairyDomain:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type
+ )
+ return DumpString
+
+
+m_NAtagCMVisitFairyDomain=tagCMVisitFairyDomain()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMVisitFairyDomain.Cmd,m_NAtagCMVisitFairyDomain.SubCmd))] = m_NAtagCMVisitFairyDomain
#------------------------------------------------------
@@ -11847,6 +12318,54 @@
#------------------------------------------------------
+# A8 06 查询充值结果 #tagCMQueryRecharge
+
+class tagCMQueryRecharge(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA8
+ 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 = 0xA8
+ self.SubCmd = 0x06
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMQueryRecharge)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 06 查询充值结果 //tagCMQueryRecharge:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMQueryRecharge=tagCMQueryRecharge()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryRecharge.Cmd,m_NAtagCMQueryRecharge.SubCmd))] = m_NAtagCMQueryRecharge
+
+
+#------------------------------------------------------
# A8 05 VIP杀怪等级信息同步开关 #tagCMVIPKillNPCLVInfoSwitch
class tagCMVIPKillNPCLVInfoSwitch(Structure):
@@ -12071,174 +12590,6 @@
#------------------------------------------------------
-# AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward
-
-class tagCMGetClassUPDayAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DayType", c_ubyte), # 升阶日类型
- ("ClassLV", c_ubyte), # 阶级
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x02
- self.DayType = 0
- self.ClassLV = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetClassUPDayAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 02 领取升阶功能特惠奖励 //tagCMGetClassUPDayAward:
- Cmd:%s,
- SubCmd:%s,
- DayType:%d,
- ClassLV:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DayType,
- self.ClassLV
- )
- return DumpString
-
-
-m_NAtagCMGetClassUPDayAward=tagCMGetClassUPDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetClassUPDayAward.Cmd,m_NAtagCMGetClassUPDayAward.SubCmd))] = m_NAtagCMGetClassUPDayAward
-
-
-#------------------------------------------------------
-# AA 04 领取消费奖励 #tagCMGetCostAward
-
-class tagCMGetCostAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("Index", c_ubyte), # 索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x04
- 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 = 0x04
- self.ActionID = 0
- self.Index = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetCostAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 04 领取消费奖励 //tagCMGetCostAward:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- Index:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.Index
- )
- return DumpString
-
-
-m_NAtagCMGetCostAward=tagCMGetCostAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCostAward.Cmd,m_NAtagCMGetCostAward.SubCmd))] = m_NAtagCMGetCostAward
-
-
-#------------------------------------------------------
-# AA 03 领取充值特惠奖励 #tagCMGetRechargeTeHuiAward
-
-class tagCMGetRechargeTeHuiAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActionID", c_int), # 活动ID
- ("Index", c_ubyte), # 规则索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- self.SubCmd = 0x03
- 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 = 0x03
- self.ActionID = 0
- self.Index = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetRechargeTeHuiAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 03 领取充值特惠奖励 //tagCMGetRechargeTeHuiAward:
- Cmd:%s,
- SubCmd:%s,
- ActionID:%d,
- Index:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActionID,
- self.Index
- )
- return DumpString
-
-
-m_NAtagCMGetRechargeTeHuiAward=tagCMGetRechargeTeHuiAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetRechargeTeHuiAward.Cmd,m_NAtagCMGetRechargeTeHuiAward.SubCmd))] = m_NAtagCMGetRechargeTeHuiAward
-
-
-#------------------------------------------------------
#AA 01 领取累计登陆礼 # tagCMGetTotalLoginDayAward
class tagCMGetTotalLoginDayAward(Structure):
@@ -12288,6 +12639,54 @@
m_NAtagCMGetTotalLoginDayAward=tagCMGetTotalLoginDayAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTotalLoginDayAward.Cmd,m_NAtagCMGetTotalLoginDayAward.SubCmd))] = m_NAtagCMGetTotalLoginDayAward
+
+
+#------------------------------------------------------
+# AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure
+
+class tagCMStartLuckyTreasure(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ 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 = 0xAA
+ self.SubCmd = 0x08
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMStartLuckyTreasure)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 08 开始幸运鉴宝 //tagCMStartLuckyTreasure:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
#------------------------------------------------------
@@ -12347,6 +12746,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("RedPaketID", c_int), # 红包ID
+ ("GetWay", c_ubyte), #获得途径
]
def __init__(self):
@@ -12364,6 +12764,7 @@
self.Cmd = 0xAB
self.SubCmd = 0x12
self.RedPaketID = 0
+ self.GetWay = 0
return
def GetLength(self):
@@ -12376,12 +12777,14 @@
DumpString = '''// AB 12 抢红包 //tagCMGrabFamilyRedPacket:
Cmd:%s,
SubCmd:%s,
- RedPaketID:%d
+ RedPaketID:%d,
+ GetWay:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.RedPaketID
+ self.RedPaketID,
+ self.GetWay
)
return DumpString
@@ -12496,240 +12899,6 @@
m_NAtagCMDiceTake=tagCMDiceTake()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDiceTake.Cmd,m_NAtagCMDiceTake.SubCmd))] = m_NAtagCMDiceTake
-
-
-#------------------------------------------------------
-# AB 06 活动物品兑换 #tagCMExchangeActionItem
-
-class tagCMExchangeActionItem(Structure):
- Head = tagHead()
- ActionKeyLen = 0 #(BYTE ActionKeyLen)
- ActionKey = "" #(String ActionKey)
- ItemID = 0 #(DWORD ItemID)// 兑换的目标物品ID
- ExcCnt = 0 #(WORD ExcCnt)// 兑换个数,默认1个
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActionKeyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ActionKey,_pos = CommFunc.ReadString(_lpData, _pos,self.ActionKeyLen)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExcCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x06
- self.ActionKeyLen = 0
- self.ActionKey = ""
- self.ItemID = 0
- self.ExcCnt = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.ActionKey)
- length += 4
- length += 2
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActionKeyLen)
- data = CommFunc.WriteString(data, self.ActionKeyLen, self.ActionKey)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteWORD(data, self.ExcCnt)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActionKeyLen:%d,
- ActionKey:%s,
- ItemID:%d,
- ExcCnt:%d
- '''\
- %(
- self.Head.OutputString(),
- self.ActionKeyLen,
- self.ActionKey,
- self.ItemID,
- self.ExcCnt
- )
- return DumpString
-
-
-m_NAtagCMExchangeActionItem=tagCMExchangeActionItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeActionItem.Head.Cmd,m_NAtagCMExchangeActionItem.Head.SubCmd))] = m_NAtagCMExchangeActionItem
-
-
-#------------------------------------------------------
-# AB 07 领取节日登陆奖励 #tagCMGetFestivalLoginAward
-
-class tagCMGetFestivalLoginAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FestivalType", c_ubyte), # 节日类型
- ("DayIndex", c_ubyte), # 节日天 <从节日活动开始日0天开始>
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x07
- self.FestivalType = 0
- self.DayIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetFestivalLoginAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 07 领取节日登陆奖励 //tagCMGetFestivalLoginAward:
- Cmd:%s,
- SubCmd:%s,
- FestivalType:%d,
- DayIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FestivalType,
- self.DayIndex
- )
- return DumpString
-
-
-m_NAtagCMGetFestivalLoginAward=tagCMGetFestivalLoginAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFestivalLoginAward.Cmd,m_NAtagCMGetFestivalLoginAward.SubCmd))] = m_NAtagCMGetFestivalLoginAward
-
-
-#------------------------------------------------------
-# AB 02 领取领地争夺战每日奖励 #tagCMGetManorWarDailyAward
-
-class tagCMGetManorWarDailyAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int), # 领地id
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x02
- self.MapID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetManorWarDailyAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 02 领取领地争夺战每日奖励 //tagCMGetManorWarDailyAward:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID
- )
- return DumpString
-
-
-m_NAtagCMGetManorWarDailyAward=tagCMGetManorWarDailyAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarDailyAward.Cmd,m_NAtagCMGetManorWarDailyAward.SubCmd))] = m_NAtagCMGetManorWarDailyAward
-
-
-#------------------------------------------------------
-# AB 01 领取领地争夺战参与奖 #tagCMGetManorWarJoinAward
-
-class tagCMGetManorWarJoinAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAB
- 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 = 0xAB
- self.SubCmd = 0x01
- return
-
- def GetLength(self):
- return sizeof(tagCMGetManorWarJoinAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 01 领取领地争夺战参与奖 //tagCMGetManorWarJoinAward:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMGetManorWarJoinAward=tagCMGetManorWarJoinAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetManorWarJoinAward.Cmd,m_NAtagCMGetManorWarJoinAward.SubCmd))] = m_NAtagCMGetManorWarJoinAward
#------------------------------------------------------
@@ -13609,6 +13778,118 @@
#------------------------------------------------------
+# B1 0A 副本购买buff #tagCMFBBuyBuff
+
+class tagCMFBBuyBuff(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("MoneyCnt", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ self.SubCmd = 0x0A
+ 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 = 0x0A
+ self.MapID = 0
+ self.MoneyCnt = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMFBBuyBuff)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B1 0A 副本购买buff //tagCMFBBuyBuff:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ MoneyCnt:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.MoneyCnt
+ )
+ return DumpString
+
+
+m_NAtagCMFBBuyBuff=tagCMFBBuyBuff()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBBuyBuff.Cmd,m_NAtagCMFBBuyBuff.SubCmd))] = m_NAtagCMFBBuyBuff
+
+
+#------------------------------------------------------
+# 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):
@@ -13825,6 +14106,62 @@
#------------------------------------------------------
+# 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):
@@ -13874,6 +14211,131 @@
m_NAtagCMSetFMTDouble=tagCMSetFMTDouble()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSetFMTDouble.Cmd,m_NAtagCMSetFMTDouble.SubCmd))] = m_NAtagCMSetFMTDouble
+
+
+#------------------------------------------------------
+# B2 06 玩家加点 #tagCMAddPoint
+
+class tagCMAddPoint(Structure):
+ Head = tagHead()
+ PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数
+ PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表
+ PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PointAttrIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.PointAttrIDList.append(value)
+ for i in range(self.PointAttrIDCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.PointValueList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x06
+ self.PointAttrIDCount = 0
+ self.PointAttrIDList = list()
+ self.PointValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1 * self.PointAttrIDCount
+ length += 2 * self.PointAttrIDCount
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.PointAttrIDCount)
+ 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])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PointAttrIDCount:%d,
+ PointAttrIDList:%s,
+ PointValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PointAttrIDCount,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMAddPoint=tagCMAddPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddPoint.Head.Cmd,m_NAtagCMAddPoint.Head.SubCmd))] = m_NAtagCMAddPoint
+
+
+#------------------------------------------------------
+# B2 07 重置加点 #tagCMResetAttrPoint
+
+class tagCMResetAttrPoint(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ 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 = 0xB2
+ self.SubCmd = 0x07
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMResetAttrPoint)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 07 重置加点 //tagCMResetAttrPoint:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMResetAttrPoint=tagCMResetAttrPoint()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetAttrPoint.Cmd,m_NAtagCMResetAttrPoint.SubCmd))] = m_NAtagCMResetAttrPoint
#------------------------------------------------------
@@ -14160,6 +14622,62 @@
#------------------------------------------------------
+# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
+
+class tagCMSummonPriWoodPile(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("NPCID", c_int),
+ ("Count", c_ubyte), #默认1个,最多5个
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0C
+ 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 = 0x0C
+ self.NPCID = 0
+ self.Count = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSummonPriWoodPile)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile:
+ Cmd:%s,
+ SubCmd:%s,
+ NPCID:%d,
+ Count:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.NPCID,
+ self.Count
+ )
+ return DumpString
+
+
+m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
+
+
+#------------------------------------------------------
#B4 06 战斗移动 # tagCMFightMove
class tagCMFightMove(Structure):
@@ -14225,6 +14743,66 @@
m_NAtagCMFightMove=tagCMFightMove()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFightMove.Cmd,m_NAtagCMFightMove.SubCmd))] = m_NAtagCMFightMove
+
+
+#------------------------------------------------------
+#B4 0B 根据类型来决定移动的方式 #tagCMMoveByType
+
+class tagCMMoveByType(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("PosX", c_ushort), # 目标X
+ ("PosY", c_ushort), # 目标Y
+ ("MoveType", c_ubyte), #移动方式
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0B
+ 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 = 0x0B
+ self.PosX = 0
+ self.PosY = 0
+ self.MoveType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMMoveByType)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B4 0B 根据类型来决定移动的方式 //tagCMMoveByType:
+ Cmd:%s,
+ SubCmd:%s,
+ PosX:%d,
+ PosY:%d,
+ MoveType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.PosX,
+ self.PosY,
+ self.MoveType
+ )
+ return DumpString
+
+
+m_NAtagCMMoveByType=tagCMMoveByType()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoveByType.Cmd,m_NAtagCMMoveByType.SubCmd))] = m_NAtagCMMoveByType
#------------------------------------------------------
@@ -14877,6 +15455,62 @@
#------------------------------------------------------
+# B4 0D 战斗印记 #tagCMYinji
+
+class tagCMYinji(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Count", c_ubyte),
+ ("Type", c_ubyte), # 0 加,1减
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ 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 = 0xB4
+ self.SubCmd = 0x0D
+ self.Count = 0
+ self.Type = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMYinji)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
+ Cmd:%s,
+ SubCmd:%s,
+ Count:%d,
+ Type:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Count,
+ self.Type
+ )
+ return DumpString
+
+
+m_NAtagCMYinji=tagCMYinji()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
+
+
+#------------------------------------------------------
#B4 03 吸引NPC仇恨 #tagNPCAttention
class tagNPCAttention(Structure):
@@ -14941,6 +15575,70 @@
m_NAtagNPCAttention=tagNPCAttention()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagNPCAttention.Head.Cmd,m_NAtagNPCAttention.Head.SubCmd))] = m_NAtagNPCAttention
+
+
+#------------------------------------------------------
+# B5 14 拍卖行竞价物品 #tagCMBiddingAuctionItem
+
+class tagCMBiddingAuctionItem(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ BiddingPrice = 0 #(WORD BiddingPrice)//竞价价格
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x14
+ 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)
+ self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x14
+ self.ItemGUID = ""
+ self.BiddingPrice = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+ length += 2
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteWORD(data, self.BiddingPrice)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s,
+ BiddingPrice:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID,
+ self.BiddingPrice
+ )
+ return DumpString
+
+
+m_NAtagCMBiddingAuctionItem=tagCMBiddingAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBiddingAuctionItem.Head.Cmd,m_NAtagCMBiddingAuctionItem.Head.SubCmd))] = m_NAtagCMBiddingAuctionItem
#------------------------------------------------------
@@ -15093,6 +15791,58 @@
#------------------------------------------------------
+# B5 13 拍卖行上架拍品 #tagCMSellAuctionItem
+
+class tagCMSellAuctionItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemIndex", c_ubyte), #物品在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ self.SubCmd = 0x13
+ 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 = 0x13
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMSellAuctionItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 13 拍卖行上架拍品 //tagCMSellAuctionItem:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMSellAuctionItem=tagCMSellAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSellAuctionItem.Cmd,m_NAtagCMSellAuctionItem.SubCmd))] = m_NAtagCMSellAuctionItem
+
+
+#------------------------------------------------------
# B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState
class tagCMChangeTeamCheckState(Structure):
@@ -15146,6 +15896,70 @@
m_NAtagCMChangeTeamCheckState=tagCMChangeTeamCheckState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeTeamCheckState.Cmd,m_NAtagCMChangeTeamCheckState.SubCmd))] = m_NAtagCMChangeTeamCheckState
+
+
+#------------------------------------------------------
+# C1 06 跨服NPC对话 #tagCMCrossNPCTalk
+
+class tagCMCrossNPCTalk(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ("NPCID", c_int),
+ ("PosX", c_ushort),
+ ("PosY", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x06
+ self.ObjID = 0
+ self.NPCID = 0
+ self.PosX = 0
+ self.PosY = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossNPCTalk)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 06 跨服NPC对话 //tagCMCrossNPCTalk:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d,
+ NPCID:%d,
+ PosX:%d,
+ PosY:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID,
+ self.NPCID,
+ self.PosX,
+ self.PosY
+ )
+ return DumpString
+
+
+m_NAtagCMCrossNPCTalk=tagCMCrossNPCTalk()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossNPCTalk.Cmd,m_NAtagCMCrossNPCTalk.SubCmd))] = m_NAtagCMCrossNPCTalk
#------------------------------------------------------
@@ -15305,6 +16119,114 @@
#------------------------------------------------------
+# C1 08 跨服PK挑战机器人结算 #tagCMCrossRealmPKRobotOver
+
+class tagCMCrossRealmPKRobotOver(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsWin", c_ubyte), #是否获胜
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ 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 = 0xC1
+ self.SubCmd = 0x08
+ self.IsWin = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMCrossRealmPKRobotOver)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 08 跨服PK挑战机器人结算 //tagCMCrossRealmPKRobotOver:
+ Cmd:%s,
+ SubCmd:%s,
+ IsWin:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsWin
+ )
+ return DumpString
+
+
+m_NAtagCMCrossRealmPKRobotOver=tagCMCrossRealmPKRobotOver()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMCrossRealmPKRobotOver.Cmd,m_NAtagCMCrossRealmPKRobotOver.SubCmd))] = m_NAtagCMCrossRealmPKRobotOver
+
+
+#------------------------------------------------------
+# C1 05 进入跨服地图 #tagCMEnterCrossServer
+
+class tagCMEnterCrossServer(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DataMapID", c_int),
+ ("LineID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xC1
+ self.SubCmd = 0x05
+ 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 = 0xC1
+ self.SubCmd = 0x05
+ self.DataMapID = 0
+ self.LineID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEnterCrossServer)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// C1 05 进入跨服地图 //tagCMEnterCrossServer:
+ Cmd:%s,
+ SubCmd:%s,
+ DataMapID:%d,
+ LineID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DataMapID,
+ self.LineID
+ )
+ return DumpString
+
+
+m_NAtagCMEnterCrossServer=tagCMEnterCrossServer()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEnterCrossServer.Cmd,m_NAtagCMEnterCrossServer.SubCmd))] = m_NAtagCMEnterCrossServer
+
+
+#------------------------------------------------------
# C1 04 主动退出跨服 #tagCMExitCrossRealm
class tagCMExitCrossRealm(Structure):
@@ -15349,4 +16271,4 @@
m_NAtagCMExitCrossRealm=tagCMExitCrossRealm()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
--
Gitblit v1.8.0