|  |  |  | 
|---|
|  |  |  | 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])//家族名称 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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)//上周在线时间 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("StartYear", c_ushort),    #年,    如果填写0, 就隐藏此窗口 | 
|---|
|  |  |  | ("StartYear", c_ushort),    #年,   如果填写0, 就隐藏此窗口 | 
|---|
|  |  |  | ("StartMonth", c_ushort),    #月 | 
|---|
|  |  |  | ("StartDate", c_ubyte),    #日 | 
|---|
|  |  |  | ("EndYear", c_ushort), | 
|---|
|  |  |  | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | class  tagFBEventList(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | EventCount = 0    #(BYTE EventCount)//副本活动数 | 
|---|
|  |  |  | EventList = list()    #(vector<tagFBEventDetail> EventList)//副本活动列表 | 
|---|
|  |  |  | EventList = list()    #(vector<tagFBEventDetail> EventList)//副本活动列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | #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 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("PlayerID", c_int), | 
|---|
|  |  |  | ("FamilyMemberLV", c_ubyte),    #玩家在家族中的职位 | 
|---|
|  |  |  | ("FamilyMemberLV", c_ubyte),    #玩家在家族中的职位 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #------------------------------------------------------ | 
|---|
|  |  |  | #04 36    周围玩家家族名刷新#tagPlayerFamilyNameRefresh | 
|---|
|  |  |  | #04 36   周围玩家家族名刷新#tagPlayerFamilyNameRefresh | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class  tagPlayerFamilyNameRefresh(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | 
|---|
|  |  |  | ("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 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("MakeType", c_ubyte),    #类型        TMakeItemType | 
|---|
|  |  |  | ("MakeType", c_ubyte),    #类型      TMakeItemType | 
|---|
|  |  |  | ("Result", c_ubyte),    #是否成功 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ("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 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | 
|---|
|  |  |  | 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)//扩展属性 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | class  tagFamilyTechInfo(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | TechCount = 0    #(WORD TechCount)//帮会科技数量 | 
|---|
|  |  |  | TechInfoList = list()    #(vector<tagTechInfo> TechInfoList)//科技信息列表 | 
|---|
|  |  |  | TechInfoList = list()    #(vector<tagTechInfo> TechInfoList)//科技信息列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | #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)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 | 
|---|
|  |  |  | 
|---|
|  |  |  | MakerNameLen = 0    #(BYTE MakerNameLen)//制造者名字 | 
|---|
|  |  |  | MakerName = ""    #(String MakerName)//size = MakerNameLen | 
|---|
|  |  |  | UserDataLen = 0    #(DWORD UserDataLen) | 
|---|
|  |  |  | UserData = ""    #(String UserData)//自定义数据 | 
|---|
|  |  |  | UserData = ""    #(String UserData)//自定义数据 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | ("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 | 
|---|
|  |  |  | 
|---|
|  |  |  | ("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): | 
|---|
|  |  |  | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("FormID", c_int),    # 挂单ID | 
|---|
|  |  |  | ("UnitPrice", c_int),    #该单购买元宝的银两单价(每组) | 
|---|
|  |  |  | ("LefGold", c_int),    #该单的剩余购买元宝组数 | 
|---|
|  |  |  | ("LefGold", c_int),    #该单的剩余购买元宝组数 | 
|---|
|  |  |  | ("LeftTime", c_ushort),    #该单的剩余在架时间 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | _fields_ = [ | 
|---|
|  |  |  | ("Cmd", c_ubyte), | 
|---|
|  |  |  | ("SubCmd", c_ubyte), | 
|---|
|  |  |  | ("LabelID", c_int),    # 删除标签 | 
|---|
|  |  |  | ("LabelID", c_int),    # 删除标签 | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | class  tagHightLadderTopPlayerList(Structure): | 
|---|
|  |  |  | Head = tagHead() | 
|---|
|  |  |  | Size = 0    #(BYTE Size) | 
|---|
|  |  |  | PlayerList = list()    #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 | 
|---|
|  |  |  | PlayerList = list()    #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表 | 
|---|
|  |  |  | data = None | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __init__(self): | 
|---|
|  |  |  | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | 
|---|
|  |  |  | 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): | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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)//出售价格 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 | 
|---|