|  |  | 
 |  |  |     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])//家族名称
 | 
 |  |  | 
 |  |  |     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.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)
 | 
 |  |  | 
 |  |  |         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.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 += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 33
 | 
 |  |  | 
 |  |  |         length += 4
 | 
 |  |  |         length += 15
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         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)
 | 
 |  |  | 
 |  |  |         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):
 | 
 |  |  | 
 |  |  |                                 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(),
 | 
 |  |  | 
 |  |  |                                 self.ExAttr14,
 | 
 |  |  |                                 self.OperateInfo,
 | 
 |  |  |                                 self.Operate,
 | 
 |  |  |                                 self.ServerID
 | 
 |  |  |                                 self.ServerID,
 | 
 |  |  |                                 self.ExAttr15,
 | 
 |  |  |                                 self.ExAttr16,
 | 
 |  |  |                                 self.ExAttr17,
 | 
 |  |  |                                 self.ExAttr18,
 | 
 |  |  |                                 self.ExAttr19,
 | 
 |  |  |                                 self.ExAttr20
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  |     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):
 | 
 |  |  | 
 |  |  |         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):
 | 
 |  |  | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 30
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     GradID = 0    #(DWORD GradID)//头衔ID
 | 
 |  |  |     CreateTime = ""    #(char CreateTime[30])//获得时间
 | 
 |  |  |     ExpireTime = 0    #(DWORD ExpireTime)// 持续时间,0为配表固定时间
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         _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):
 | 
 |  |  | 
 |  |  |         self.Head.SubCmd = 0x36
 | 
 |  |  |         self.GradID = 0
 | 
 |  |  |         self.CreateTime = ""
 | 
 |  |  |         self.ExpireTime = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 30
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | #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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     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):
 | 
 |  |  | 
 |  |  |             _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):
 | 
 |  |  | 
 |  |  |         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):
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         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):
 | 
 |  |  | 
 |  |  |                                 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(),
 | 
 |  |  | 
 |  |  |                                 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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | #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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     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):
 | 
 |  |  | 
 |  |  |         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):
 | 
 |  |  | 
 |  |  |         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):
 | 
 |  |  | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         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):
 | 
 |  |  | 
 |  |  |                                 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(),
 | 
 |  |  | 
 |  |  |                                 self.ExAttr4,
 | 
 |  |  |                                 self.ExAttr5,
 | 
 |  |  |                                 self.ServerID,
 | 
 |  |  |                                 self.State
 | 
 |  |  |                                 self.State,
 | 
 |  |  |                                 self.ExAttr15,
 | 
 |  |  |                                 self.ExAttr16,
 | 
 |  |  |                                 self.ExAttr17,
 | 
 |  |  |                                 self.ExAttr18,
 | 
 |  |  |                                 self.ExAttr19,
 | 
 |  |  |                                 self.ExAttr20
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |                   ("ObjType", c_ubyte),    #对象类型
 | 
 |  |  |                   ("PosX", c_ushort),    
 | 
 |  |  |                   ("PosY", c_ushort),    
 | 
 |  |  |                   ("Reason", c_int),    # 0为游戏通用,其他未决定的为技能ID
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.ObjType = 0
 | 
 |  |  |         self.PosX = 0
 | 
 |  |  |         self.PosY = 0
 | 
 |  |  |         self.Reason = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |                                 ObjID:%d,
 | 
 |  |  |                                 ObjType:%d,
 | 
 |  |  |                                 PosX:%d,
 | 
 |  |  |                                 PosY:%d
 | 
 |  |  |                                 PosY:%d,
 | 
 |  |  |                                 Reason:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  | 
 |  |  |                                 self.ObjID,
 | 
 |  |  |                                 self.ObjType,
 | 
 |  |  |                                 self.PosX,
 | 
 |  |  |                                 self.PosY
 | 
 |  |  |                                 self.PosY,
 | 
 |  |  |                                 self.Reason
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |                   ("PlayerID", c_int),    # 主人ID
 | 
 |  |  |                   ("PosX", c_int),    # X坐标
 | 
 |  |  |                   ("PosY", c_int),    # Y坐标
 | 
 |  |  |                   ("Rank", c_ubyte),    #阶段
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.PlayerID = 0
 | 
 |  |  |         self.PosX = 0
 | 
 |  |  |         self.PosY = 0
 | 
 |  |  |         self.Rank = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |                                 NPCID:%d,
 | 
 |  |  |                                 PlayerID:%d,
 | 
 |  |  |                                 PosX:%d,
 | 
 |  |  |                                 PosY:%d
 | 
 |  |  |                                 PosY:%d,
 | 
 |  |  |                                 Rank:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  | 
 |  |  |                                 self.NPCID,
 | 
 |  |  |                                 self.PlayerID,
 | 
 |  |  |                                 self.PosX,
 | 
 |  |  |                                 self.PosY
 | 
 |  |  |                                 self.PosY,
 | 
 |  |  |                                 self.Rank
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     MaxHP = 0    #(DWORD MaxHP)
 | 
 |  |  |     MaxHPEx = 0    #(DWORD MaxHPEx)
 | 
 |  |  |     Speed = 0    #(WORD Speed)
 | 
 |  |  |     LV = 0    #(BYTE LV)
 | 
 |  |  |     LV = 0    #(WORD LV)
 | 
 |  |  |     OwnerNameLen = 0    #(BYTE OwnerNameLen)
 | 
 |  |  |     OwnerName = ""    #(String OwnerName)//size = OwnerNameLen
 | 
 |  |  |     data = None
 | 
 |  |  | 
 |  |  |         self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.Speed,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.OwnerNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.OwnerNameLen)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += len(self.OwnerName)
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.MaxHP)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.MaxHPEx)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.Speed)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.LV)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.LV)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.OwnerNameLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.OwnerNameLen, self.OwnerName)
 | 
 |  |  |         return data
 | 
 |  |  | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("PlayerID", c_int),    
 | 
 |  |  |                   ("KillerID", c_int),     | 
 |  |  |                   ("KillerType", c_ubyte),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.Cmd = 0x06
 | 
 |  |  |         self.SubCmd = 0x09
 | 
 |  |  |         self.PlayerID = 0
 | 
 |  |  |         self.KillerID = 0
 | 
 |  |  |         self.KillerType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         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
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     ObjType = 0    #(BYTE ObjType)
 | 
 |  |  |     BattleType = 0    #(BYTE BattleType)//物理/魔法
 | 
 |  |  |     SkillID = 0    #(WORD SkillID)
 | 
 |  |  |     SkillIDEx = 0    #(WORD SkillIDEx)
 | 
 |  |  |     PosX = 0    #(WORD PosX)
 | 
 |  |  |     PosY = 0    #(WORD PosY)
 | 
 |  |  |     HurtCount = 0    #(WORD HurtCount)//伤害数目
 | 
 |  |  |     HurtList = list()    #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
 | 
 |  |  |     SkillElementID = 0    #(WORD SkillElementID)//专精技能ID     | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.ObjType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.BattleType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.SkillID,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.SkillIDEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.HurtCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  | 
 |  |  |             temHurtList = tagSkillPosHurtObj()
 | 
 |  |  |             _pos = temHurtList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.HurtList.append(temHurtList)
 | 
 |  |  |         self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  | 
 |  |  |         self.ObjType = 0
 | 
 |  |  |         self.BattleType = 0
 | 
 |  |  |         self.SkillID = 0
 | 
 |  |  |         self.SkillIDEx = 0
 | 
 |  |  |         self.PosX = 0
 | 
 |  |  |         self.PosY = 0
 | 
 |  |  |         self.HurtCount = 0
 | 
 |  |  |         self.HurtList = list()
 | 
 |  |  |         self.SkillElementID = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         for i in range(self.HurtCount):
 | 
 |  |  |             length += self.HurtList[i].GetLength()
 | 
 |  |  |         length += 2
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ObjType)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.BattleType)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.SkillID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.SkillIDEx)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.PosX)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.PosY)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.HurtCount)
 | 
 |  |  |         for i in range(self.HurtCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.SkillElementID)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  | 
 |  |  |                                 ObjType:%d,
 | 
 |  |  |                                 BattleType:%d,
 | 
 |  |  |                                 SkillID:%d,
 | 
 |  |  |                                 SkillIDEx:%d,
 | 
 |  |  |                                 PosX:%d,
 | 
 |  |  |                                 PosY:%d,
 | 
 |  |  |                                 HurtCount:%d,
 | 
 |  |  |                                 HurtList:%s
 | 
 |  |  |                                 HurtList:%s,
 | 
 |  |  |                                 SkillElementID:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  | 
 |  |  |                                 self.ObjType,
 | 
 |  |  |                                 self.BattleType,
 | 
 |  |  |                                 self.SkillID,
 | 
 |  |  |                                 self.SkillIDEx,
 | 
 |  |  |                                 self.PosX,
 | 
 |  |  |                                 self.PosY,
 | 
 |  |  |                                 self.HurtCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.SkillElementID
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 |