hxp
2019-10-29 2941a7635bb04ca59afa820b51a23aca9dc70eb9
Tool/RobotTest/Protocol/PacketsReceived.py
@@ -983,7 +983,7 @@
    LV = 0    #(WORD LV)//等级
    LVEx = 0    #(WORD LVEx)//玩家等级副本,用于转生
    LV2 = 0    #(WORD LV2)//大师等级
    ExpPoint = 0    #(WORD ExpPoint)//扩充经验点数
    ExpPoint = 0    #(DWORD ExpPoint)//扩充经验点数
    TotalExp = 0    #(DWORD TotalExp)//总经验
    Family = 0    #(DWORD Family)//家族
    FamilyName = ""    #(char FamilyName[33])//家族名称
@@ -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)//上周在线时间
@@ -1062,6 +1062,12 @@
    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):
@@ -1084,7 +1090,7 @@
        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.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)
@@ -1163,6 +1169,12 @@
        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):
@@ -1260,6 +1272,12 @@
        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):
@@ -1276,7 +1294,7 @@
        length += 2
        length += 2
        length += 2
        length += 2
        length += 4
        length += 4
        length += 4
        length += 33
@@ -1355,6 +1373,12 @@
        length += 4
        length += 15
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
@@ -1372,7 +1396,7 @@
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.LVEx)
        data = CommFunc.WriteWORD(data, self.LV2)
        data = CommFunc.WriteWORD(data, self.ExpPoint)
        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)
@@ -1451,6 +1475,12 @@
        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):
@@ -1545,7 +1575,13 @@
                                ExAttr14:%d,
                                OperateInfo:%d,
                                Operate:%s,
                                ServerID:%d
                                ServerID:%d,
                                ExAttr15:%d,
                                ExAttr16:%d,
                                ExAttr17:%d,
                                ExAttr18:%d,
                                ExAttr19:%d,
                                ExAttr20:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -1638,7 +1674,13 @@
                                self.ExAttr14,
                                self.OperateInfo,
                                self.Operate,
                                self.ServerID
                                self.ServerID,
                                self.ExAttr15,
                                self.ExAttr16,
                                self.ExAttr17,
                                self.ExAttr18,
                                self.ExAttr19,
                                self.ExAttr20
                                )
        return DumpString
@@ -2549,6 +2591,70 @@
m_NAtagCheckSecurityCardResult=tagCheckSecurityCardResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCheckSecurityCardResult.Cmd,m_NAtagCheckSecurityCardResult.SubCmd))] = m_NAtagCheckSecurityCardResult
#------------------------------------------------------
#01 32 创角成功 #tagCreateRoleSucess
class  tagCreateRoleSucess(Structure):
    Head = tagHead()
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0x01
        self.Head.SubCmd = 0x32
        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.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0x01
        self.Head.SubCmd = 0x32
        self.PlayerID = 0
        self.PlayerName = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 33
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PlayerID:%d,
                                PlayerName:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PlayerID,
                                self.PlayerName
                                )
        return DumpString
m_NAtagCreateRoleSucess=tagCreateRoleSucess()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCreateRoleSucess.Head.Cmd,m_NAtagCreateRoleSucess.Head.SubCmd))] = m_NAtagCreateRoleSucess
#------------------------------------------------------
@@ -5783,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),    
@@ -5915,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):
@@ -6543,6 +6649,7 @@
    GradID = 0    #(DWORD GradID)//头衔ID
    State = 0    #(BYTE State)//装备和使用状态 按位判定,第一位0未装备1已装备 第二位0未使用 1使用
    CreateTime = ""    #(char CreateTime[30])//获得时间
    ExpireTime = 0    #(DWORD ExpireTime)// 持续时间,0为配表固定时间
    data = None
    def __init__(self):
@@ -6554,12 +6661,14 @@
        self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
        self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.GradID = 0
        self.State = 0
        self.CreateTime = ""
        self.ExpireTime = 0
        return
    def GetLength(self):
@@ -6567,6 +6676,7 @@
        length += 4
        length += 1
        length += 30
        length += 4
        return length
@@ -6575,18 +6685,21 @@
        data = CommFunc.WriteDWORD(data, self.GradID)
        data = CommFunc.WriteBYTE(data, self.State)
        data = CommFunc.WriteString(data, 30, self.CreateTime)
        data = CommFunc.WriteDWORD(data, self.ExpireTime)
        return data
    def OutputString(self):
        DumpString = '''
                                GradID:%d,
                                State:%d,
                                CreateTime:%s
                                CreateTime:%s,
                                ExpireTime:%d
                                '''\
                                %(
                                self.GradID,
                                self.State,
                                self.CreateTime
                                self.CreateTime,
                                self.ExpireTime
                                )
        return DumpString
@@ -6664,6 +6777,7 @@
    Head = tagHead()
    GradID = 0    #(DWORD GradID)//头衔ID
    CreateTime = ""    #(char CreateTime[30])//获得时间
    ExpireTime = 0    #(DWORD ExpireTime)// 持续时间,0为配表固定时间
    data = None
    def __init__(self):
@@ -6677,6 +6791,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.GradID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
        self.ExpireTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -6686,6 +6801,7 @@
        self.Head.SubCmd = 0x36
        self.GradID = 0
        self.CreateTime = ""
        self.ExpireTime = 0
        return
    def GetLength(self):
@@ -6693,6 +6809,7 @@
        length += self.Head.GetLength()
        length += 4
        length += 30
        length += 4
        return length
@@ -6701,18 +6818,21 @@
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.GradID)
        data = CommFunc.WriteString(data, 30, self.CreateTime)
        data = CommFunc.WriteDWORD(data, self.ExpireTime)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                GradID:%d,
                                CreateTime:%s
                                CreateTime:%s,
                                ExpireTime:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.GradID,
                                self.CreateTime
                                self.CreateTime,
                                self.ExpireTime
                                )
        return DumpString
@@ -6941,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
@@ -7017,6 +7106,16 @@
    EquipCount = 0    #(BYTE EquipCount)
    EquipInfo = list()    #(vector<tagLoginInfoEquip> EquipInfo)//size = EquipCount
    EquipShowSwitch = 0    #(DWORD EquipShowSwitch)//玩家装备显示开关
    ExAttr15 = 0    #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr16 = 0    #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr17 = 0    #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr18 = 0    #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr19 = 0    #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr20 = 0    #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
    IPLen = 0    #(BYTE IPLen)
    IP = ""    #(String IP)// 跨服IP
    Port = 0    #(WORD Port)// 跨服端口
    CrossState = 0    #(BYTE CrossState)// 跨服状态0-非跨服状态,1-跨服状态,2-跨服状态异常
    data = None
    def __init__(self):
@@ -7040,6 +7139,16 @@
            _pos = temEquipInfo.ReadData(_lpData, _pos)
            self.EquipInfo.append(temEquipInfo)
        self.EquipShowSwitch,_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)
        self.IPLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IP,_pos = CommFunc.ReadString(_lpData, _pos,self.IPLen)
        self.Port,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.CrossState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -7056,6 +7165,16 @@
        self.EquipCount = 0
        self.EquipInfo = list()
        self.EquipShowSwitch = 0
        self.ExAttr15 = 0
        self.ExAttr16 = 0
        self.ExAttr17 = 0
        self.ExAttr18 = 0
        self.ExAttr19 = 0
        self.ExAttr20 = 0
        self.IPLen = 0
        self.IP = ""
        self.Port = 0
        self.CrossState = 0
        return
    def GetLength(self):
@@ -7071,6 +7190,16 @@
        for i in range(self.EquipCount):
            length += self.EquipInfo[i].GetLength()
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        length += len(self.IP)
        length += 2
        length += 1
        return length
@@ -7087,6 +7216,16 @@
        for i in range(self.EquipCount):
            data = CommFunc.WriteString(data, self.EquipInfo[i].GetLength(), self.EquipInfo[i].GetBuffer())
        data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
        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)
        data = CommFunc.WriteBYTE(data, self.IPLen)
        data = CommFunc.WriteString(data, self.IPLen, self.IP)
        data = CommFunc.WriteWORD(data, self.Port)
        data = CommFunc.WriteBYTE(data, self.CrossState)
        return data
    def OutputString(self):
@@ -7100,7 +7239,17 @@
                                HavePswLV2:%d,
                                EquipCount:%d,
                                EquipInfo:%s,
                                EquipShowSwitch:%d
                                EquipShowSwitch:%d,
                                ExAttr15:%d,
                                ExAttr16:%d,
                                ExAttr17:%d,
                                ExAttr18:%d,
                                ExAttr19:%d,
                                ExAttr20:%d,
                                IPLen:%d,
                                IP:%s,
                                Port:%d,
                                CrossState:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -7112,7 +7261,17 @@
                                self.HavePswLV2,
                                self.EquipCount,
                                "...",
                                self.EquipShowSwitch
                                self.EquipShowSwitch,
                                self.ExAttr15,
                                self.ExAttr16,
                                self.ExAttr17,
                                self.ExAttr18,
                                self.ExAttr19,
                                self.ExAttr20,
                                self.IPLen,
                                self.IP,
                                self.Port,
                                self.CrossState
                                )
        return DumpString
@@ -7864,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):
@@ -8403,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
@@ -8534,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
@@ -8561,6 +8689,12 @@
    ExAttr5 = 0    #(DWORD ExAttr5)//预留的扩展属性字段,用来存放项目特定的属性
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    State = 0    #(BYTE State)// 0.正常在线1.脱机挂在线 2脱机挂死亡
    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):
@@ -8618,6 +8752,12 @@
        self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.State,_pos = CommFunc.ReadBYTE(_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):
@@ -8665,6 +8805,12 @@
        self.ExAttr5 = 0
        self.ServerID = 0
        self.State = 0
        self.ExAttr15 = 0
        self.ExAttr16 = 0
        self.ExAttr17 = 0
        self.ExAttr18 = 0
        self.ExAttr19 = 0
        self.ExAttr20 = 0
        return
    def GetLength(self):
@@ -8712,6 +8858,12 @@
        length += 4
        length += 4
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
@@ -8760,6 +8912,12 @@
        data = CommFunc.WriteDWORD(data, self.ExAttr5)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteBYTE(data, self.State)
        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):
@@ -8804,7 +8962,13 @@
                                ExAttr4:%d,
                                ExAttr5:%d,
                                ServerID:%d,
                                State:%d
                                State:%d,
                                ExAttr15:%d,
                                ExAttr16:%d,
                                ExAttr17:%d,
                                ExAttr18:%d,
                                ExAttr19:%d,
                                ExAttr20:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -8847,7 +9011,13 @@
                                self.ExAttr4,
                                self.ExAttr5,
                                self.ServerID,
                                self.State
                                self.State,
                                self.ExAttr15,
                                self.ExAttr16,
                                self.ExAttr17,
                                self.ExAttr18,
                                self.ExAttr19,
                                self.ExAttr20
                                )
        return DumpString
@@ -9900,7 +10070,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    
                  ("FamilyMemberLV", c_ubyte),    #玩家在家族中的职位
                  ("FamilyMemberLV", c_ubyte),    #玩家在家族中的职位
                  ]
    def __init__(self):
@@ -9948,7 +10118,7 @@
#------------------------------------------------------
#04 36    周围玩家家族名刷新#tagPlayerFamilyNameRefresh
#04 36   周围玩家家族名刷新#tagPlayerFamilyNameRefresh
class  tagPlayerFamilyNameRefresh(Structure):
    Head = tagHead()
@@ -10026,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):
@@ -12428,6 +12598,8 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    
                  ("KillerID", c_int),
                  ("KillerType", c_ubyte),
                  ]
    def __init__(self):
@@ -12445,6 +12617,8 @@
        self.Cmd = 0x06
        self.SubCmd = 0x09
        self.PlayerID = 0
        self.KillerID = 0
        self.KillerType = 0
        return
    def GetLength(self):
@@ -12457,12 +12631,16 @@
        DumpString = '''//06 09 玩家死亡//tagPlayerDie:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d
                                PlayerID:%d,
                                KillerID:%d,
                                KillerType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID
                                self.PlayerID,
                                self.KillerID,
                                self.KillerType
                                )
        return DumpString
@@ -13362,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):
@@ -13780,7 +13958,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MakeType", c_ubyte),    #类型        TMakeItemType
                  ("MakeType", c_ubyte),    #类型      TMakeItemType
                  ("Result", c_ubyte),    #是否成功
                  ]
@@ -14868,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
                  ]
@@ -20387,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)//扩展属性
@@ -20551,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
@@ -21728,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):
@@ -22059,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)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
@@ -23525,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):
@@ -24125,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
@@ -26814,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):
@@ -26949,7 +27127,7 @@
                  ("SubCmd", c_ubyte),
                  ("FormID", c_int),    # 挂单ID
                  ("UnitPrice", c_int),    #该单购买元宝的银两单价(每组)
                  ("LefGold", c_int),    #该单的剩余购买元宝组数
                  ("LefGold", c_int),    #该单的剩余购买元宝组数
                  ("LeftTime", c_ushort),    #该单的剩余在架时间
                  ]
@@ -27238,7 +27416,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LabelID", c_int),    # 删除标签
                  ("LabelID", c_int),    # 删除标签
                  ]
    def __init__(self):
@@ -28479,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):
@@ -28741,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):
@@ -28868,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):
@@ -29041,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)//出售价格
@@ -29428,4 +29606,4 @@
m_NAtagGMCmdAnswer=tagGMCmdAnswer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer