ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -4715,7 +4715,7 @@
    ID = 0    #(DWORD ID)
    ID2 = 0    #(DWORD ID2)
    Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字 
    Name2 = ""    #(char Name2[33])//名字2
    Name2 = ""    #(char Name2[65])//名字2
    Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
    Value1 = 0    #(DWORD Value1)//排序依赖的值,比如,等级
    Value2 = 0    #(DWORD Value2)//排序依赖的值,比如,战斗力
@@ -4742,7 +4742,7 @@
        self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
        self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -4787,7 +4787,7 @@
        length += 4
        length += 4
        length += 33
        length += 33
        length += 65
        length += 1
        length += 4
        length += 4
@@ -4811,7 +4811,7 @@
        data = CommFunc.WriteDWORD(data, self.ID)
        data = CommFunc.WriteDWORD(data, self.ID2)
        data = CommFunc.WriteString(data, 33, self.Name1)
        data = CommFunc.WriteString(data, 33, self.Name2)
        data = CommFunc.WriteString(data, 65, self.Name2)
        data = CommFunc.WriteBYTE(data, self.Type2)
        data = CommFunc.WriteDWORD(data, self.Value1)
        data = CommFunc.WriteDWORD(data, self.Value2)
@@ -14685,6 +14685,8 @@
    Job = 0    #(BYTE Job)// 玩家职业
    JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
    RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    data = None
    def __init__(self):
@@ -14703,6 +14705,8 @@
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -14717,6 +14721,8 @@
        self.Job = 0
        self.JobLevel = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        return
    def GetLength(self):
@@ -14729,6 +14735,8 @@
        length += 1
        length += 1
        length += 2
        length += 4
        length += 4
        return length
@@ -14742,6 +14750,8 @@
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteBYTE(data, self.JobLevel)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        return data
    def OutputString(self):
@@ -14753,7 +14763,9 @@
                                LV:%d,
                                Job:%d,
                                JobLevel:%d,
                                RealmLV:%d
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -14763,7 +14775,9 @@
                                self.LV,
                                self.Job,
                                self.JobLevel,
                                self.RealmLV
                                self.RealmLV,
                                self.Face,
                                self.FacePic
                                )
        return DumpString
@@ -16844,7 +16858,7 @@
    ID = 0    #(DWORD ID)
    ID2 = 0    #(DWORD ID2)
    Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字 
    Name2 = ""    #(char Name2[33])//名字2
    Name2 = ""    #(char Name2[65])//名字2
    Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
    Value1 = 0    #(DWORD Value1)//自定义值1
    Value2 = 0    #(DWORD Value2)//自定义值2
@@ -16871,7 +16885,7 @@
        self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
        self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16916,7 +16930,7 @@
        length += 4
        length += 4
        length += 33
        length += 33
        length += 65
        length += 1
        length += 4
        length += 4
@@ -16940,7 +16954,7 @@
        data = CommFunc.WriteDWORD(data, self.ID)
        data = CommFunc.WriteDWORD(data, self.ID2)
        data = CommFunc.WriteString(data, 33, self.Name1)
        data = CommFunc.WriteString(data, 33, self.Name2)
        data = CommFunc.WriteString(data, 65, self.Name2)
        data = CommFunc.WriteBYTE(data, self.Type2)
        data = CommFunc.WriteDWORD(data, self.Value1)
        data = CommFunc.WriteDWORD(data, self.Value2)
@@ -17224,48 +17238,74 @@
# C0 15 跨服排位分区分组信息 #tagGCCrossChampionshipPKZoneGroupInfo
class  tagGCCrossChampionshipPKBattle(Structure):
    _pack_ = 1
    _fields_ = [
                  ("BattleNum", c_ubyte),    # 对战组编号 1~n
                  ("WinPlayerID", c_int),    # 获胜玩家ID
                  ("PlayerIDA", c_int),    # 玩家IDA
                  ("PlayerIDB", c_int),    # 玩家IDB
                  ]
    BattleNum = 0    #(BYTE BattleNum)// 对战组编号 1~n
    WinPlayerID = 0    #(DWORD WinPlayerID)// 获胜玩家ID
    PlayerIDA = 0    #(DWORD PlayerIDA)// 玩家IDA
    PlayerIDB = 0    #(DWORD PlayerIDB)// 玩家IDB
    BattleRetLen = 0    #(BYTE BattleRetLen)
    BattleRet = ""    #(String BattleRet)// 战斗结果明细 {"playerID":[[第1局胜负,第1局总积分,胜负基础分,hp分,时间分], ...], ...}
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
        self.BattleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.WinPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BattleRetLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.BattleRet,_pos = CommFunc.ReadString(_lpData, _pos,self.BattleRetLen)
        return _pos
    def Clear(self):
        self.BattleNum = 0
        self.WinPlayerID = 0
        self.PlayerIDA = 0
        self.PlayerIDB = 0
        self.BattleRetLen = 0
        self.BattleRet = ""
        return
    def GetLength(self):
        return sizeof(tagGCCrossChampionshipPKBattle)
        length = 0
        length += 1
        length += 4
        length += 4
        length += 4
        length += 1
        length += len(self.BattleRet)
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteBYTE(data, self.BattleNum)
        data = CommFunc.WriteDWORD(data, self.WinPlayerID)
        data = CommFunc.WriteDWORD(data, self.PlayerIDA)
        data = CommFunc.WriteDWORD(data, self.PlayerIDB)
        data = CommFunc.WriteBYTE(data, self.BattleRetLen)
        data = CommFunc.WriteString(data, self.BattleRetLen, self.BattleRet)
        return data
    def OutputString(self):
        DumpString = '''// C0 15 跨服排位分区分组信息 //tagGCCrossChampionshipPKZoneGroupInfo:
        DumpString = '''
                                BattleNum:%d,
                                WinPlayerID:%d,
                                PlayerIDA:%d,
                                PlayerIDB:%d
                                PlayerIDB:%d,
                                BattleRetLen:%d,
                                BattleRet:%s
                                '''\
                                %(
                                self.BattleNum,
                                self.WinPlayerID,
                                self.PlayerIDA,
                                self.PlayerIDB
                                self.PlayerIDB,
                                self.BattleRetLen,
                                self.BattleRet
                                )
        return DumpString
@@ -17727,11 +17767,11 @@
    PlayerName = ""    #(String PlayerName)// 跨服名字
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)
    RealmLV = 0    #(WORD RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    MaxHP = 0    #(DWORD MaxHP)// 默认满血,求余亿部分
    MaxHPEx = 0    #(DWORD MaxHPEx)// 默认满血,整除亿部分
    MaxProDef = 0    #(DWORD MaxProDef)// 最大护盾
    FightPower = 0    #(DWORD FightPower)//战力,求余亿部分
    FightPowerEx = 0    #(DWORD FightPowerEx)//战力,整除亿部分
    data = None
    def __init__(self):
@@ -17745,11 +17785,11 @@
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -17758,11 +17798,11 @@
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.MaxHP = 0
        self.MaxHPEx = 0
        self.MaxProDef = 0
        self.FightPower = 0
        self.FightPowerEx = 0
        return
    def GetLength(self):
@@ -17772,7 +17812,7 @@
        length += len(self.PlayerName)
        length += 1
        length += 2
        length += 4
        length += 2
        length += 4
        length += 4
        length += 4
@@ -17787,11 +17827,11 @@
        data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.MaxHP)
        data = CommFunc.WriteDWORD(data, self.MaxHPEx)
        data = CommFunc.WriteDWORD(data, self.MaxProDef)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
        return data
    def OutputString(self):
@@ -17801,11 +17841,11 @@
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                MaxHP:%d,
                                MaxHPEx:%d,
                                MaxProDef:%d
                                FightPower:%d,
                                FightPowerEx:%d
                                '''\
                                %(
                                self.PlayerID,
@@ -17813,21 +17853,17 @@
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.MaxHP,
                                self.MaxHPEx,
                                self.MaxProDef
                                self.FightPower,
                                self.FightPowerEx
                                )
        return DumpString
class  tagGCCrossRealmPKMatchOK(Structure):
    Head = tagHead()
    RoomID = 0    #(WORD RoomID)// 房间ID
    NameLen = 0    #(BYTE NameLen)
    PlayerName = ""    #(String PlayerName)// 跨服名字
    Number = 0    #(BYTE Number)// 位置编号;1-左,2-右
    MatchPlayerCount = 0    #(BYTE MatchPlayerCount)
    MatchPlayer = list()    #(vector<tagGCCrossRealmPKMatchPlayer> MatchPlayer)// 匹配到的玩家
    data = None
@@ -17841,10 +17877,6 @@
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.Number,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MatchPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.MatchPlayerCount):
            temMatchPlayer = tagGCCrossRealmPKMatchPlayer()
@@ -17857,10 +17889,6 @@
        self.Head.Clear()
        self.Head.Cmd = 0xC0
        self.Head.SubCmd = 0x01
        self.RoomID = 0
        self.NameLen = 0
        self.PlayerName = ""
        self.Number = 0
        self.MatchPlayerCount = 0
        self.MatchPlayer = list()
        return
@@ -17868,10 +17896,6 @@
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 1
        length += len(self.PlayerName)
        length += 1
        length += 1
        for i in range(self.MatchPlayerCount):
            length += self.MatchPlayer[i].GetLength()
@@ -17881,10 +17905,6 @@
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.RoomID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Number)
        data = CommFunc.WriteBYTE(data, self.MatchPlayerCount)
        for i in range(self.MatchPlayerCount):
            data = CommFunc.WriteString(data, self.MatchPlayer[i].GetLength(), self.MatchPlayer[i].GetBuffer())
@@ -17893,19 +17913,11 @@
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RoomID:%d,
                                NameLen:%d,
                                PlayerName:%s,
                                Number:%d,
                                MatchPlayerCount:%d,
                                MatchPlayer:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RoomID,
                                self.NameLen,
                                self.PlayerName,
                                self.Number,
                                self.MatchPlayerCount,
                                "..."
                                )
@@ -20413,6 +20425,7 @@
                  ("SubCmd", c_ubyte),
                  ("MapID", c_ushort),    
                  ("FuncLineID", c_ushort),    #功能线路ID
                  ("FuncMapID", c_ushort),    #功能地图ID
                  ]
    def __init__(self):
@@ -20431,6 +20444,7 @@
        self.SubCmd = 0x26
        self.MapID = 0
        self.FuncLineID = 0
        self.FuncMapID = 0
        return
    def GetLength(self):
@@ -20444,13 +20458,15 @@
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d,
                                FuncLineID:%d
                                FuncLineID:%d,
                                FuncMapID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID,
                                self.FuncLineID
                                self.FuncLineID,
                                self.FuncMapID
                                )
        return DumpString
@@ -20469,6 +20485,7 @@
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),    
                  ("FuncLineID", c_ushort),    #功能线路ID
                  ("FuncMapID", c_ushort),    #功能地图ID
                  ]
    def __init__(self):
@@ -20487,6 +20504,7 @@
        self.SubCmd = 0x27
        self.MapID = 0
        self.FuncLineID = 0
        self.FuncMapID = 0
        return
    def GetLength(self):
@@ -20500,13 +20518,15 @@
                                Cmd:%s,
                                SubCmd:%s,
                                MapID:%d,
                                FuncLineID:%d
                                FuncLineID:%d,
                                FuncMapID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MapID,
                                self.FuncLineID
                                self.FuncLineID,
                                self.FuncMapID
                                )
        return DumpString
@@ -28933,6 +28953,7 @@
    TreasureType = 0    #(BYTE TreasureType)//寻宝类型
    LuckValue = 0    #(WORD LuckValue)//当前幸运值
    TreasureCount = 0    #(DWORD TreasureCount)//已寻宝总次数
    TreasureCountToday = 0    #(DWORD TreasureCountToday)//今日已寻宝总次数
    FreeCountToday = 0    #(WORD FreeCountToday)//今日已免费寻宝次数
    TreasureCntAward = 0    #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
    GridLimitCnt = 0    #(BYTE GridLimitCnt)
@@ -28948,6 +28969,7 @@
        self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -28961,6 +28983,7 @@
        self.TreasureType = 0
        self.LuckValue = 0
        self.TreasureCount = 0
        self.TreasureCountToday = 0
        self.FreeCountToday = 0
        self.TreasureCntAward = 0
        self.GridLimitCnt = 0
@@ -28971,6 +28994,7 @@
        length = 0
        length += 1
        length += 2
        length += 4
        length += 4
        length += 2
        length += 4
@@ -28985,6 +29009,7 @@
        data = CommFunc.WriteBYTE(data, self.TreasureType)
        data = CommFunc.WriteWORD(data, self.LuckValue)
        data = CommFunc.WriteDWORD(data, self.TreasureCount)
        data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
        data = CommFunc.WriteWORD(data, self.FreeCountToday)
        data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
        data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
@@ -28997,6 +29022,7 @@
                                TreasureType:%d,
                                LuckValue:%d,
                                TreasureCount:%d,
                                TreasureCountToday:%d,
                                FreeCountToday:%d,
                                TreasureCntAward:%d,
                                GridLimitCnt:%d,
@@ -29006,6 +29032,7 @@
                                self.TreasureType,
                                self.LuckValue,
                                self.TreasureCount,
                                self.TreasureCountToday,
                                self.FreeCountToday,
                                self.TreasureCntAward,
                                self.GridLimitCnt,
@@ -33056,6 +33083,218 @@
m_NAtagObjInfoListRefresh=tagObjInfoListRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagObjInfoListRefresh.Head.Cmd,m_NAtagObjInfoListRefresh.Head.SubCmd))] = m_NAtagObjInfoListRefresh
#------------------------------------------------------
# A8 01 获得奖励信息 #tagMCGiveAwardInfo
class  tagMCGiveAwardMoney(Structure):
    _pack_ = 1
    _fields_ = [
                  ("MoneyType", c_ubyte),
                  ("MoneyValue", c_int),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.MoneyType = 0
        self.MoneyValue = 0
        return
    def GetLength(self):
        return sizeof(tagMCGiveAwardMoney)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
                                MoneyType:%d,
                                MoneyValue:%d
                                '''\
                                %(
                                self.MoneyType,
                                self.MoneyValue
                                )
        return DumpString
class  tagMCGiveAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("Count", c_int),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.Count = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCGiveAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
                                ItemID:%d,
                                Count:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.Count,
                                self.IsBind
                                )
        return DumpString
class  tagMCGiveAwardInfo(Structure):
    Head = tagHead()
    EventLen = 0    #(BYTE EventLen)
    EventName = ""    #(String EventName)
    Exp = 0    #(DWORD Exp)// 奖励经验,求余亿部分
    ExpPoint = 0    #(DWORD ExpPoint)// 奖励经验,整除亿部分
    MoneyLen = 0    #(BYTE MoneyLen)
    MoneyList = list()    #(vector<tagMCGiveAwardMoney> MoneyList)// 奖励货币
    ItemLen = 0    #(BYTE ItemLen)
    ItemList = list()    #(vector<tagMCGiveAwardItem> ItemList)// 奖励物品
    DataLen = 0    #(WORD DataLen)
    DataEx = ""    #(String DataEx)// 扩展信息,可由不同的Event自定义信息内容
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.EventLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.EventName,_pos = CommFunc.ReadString(_lpData, _pos,self.EventLen)
        self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.MoneyLen):
            temMoneyList = tagMCGiveAwardMoney()
            _pos = temMoneyList.ReadData(_lpData, _pos)
            self.MoneyList.append(temMoneyList)
        self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ItemLen):
            temItemList = tagMCGiveAwardItem()
            _pos = temItemList.ReadData(_lpData, _pos)
            self.ItemList.append(temItemList)
        self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.DataEx,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x01
        self.EventLen = 0
        self.EventName = ""
        self.Exp = 0
        self.ExpPoint = 0
        self.MoneyLen = 0
        self.MoneyList = list()
        self.ItemLen = 0
        self.ItemList = list()
        self.DataLen = 0
        self.DataEx = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += len(self.EventName)
        length += 4
        length += 4
        length += 1
        for i in range(self.MoneyLen):
            length += self.MoneyList[i].GetLength()
        length += 1
        for i in range(self.ItemLen):
            length += self.ItemList[i].GetLength()
        length += 2
        length += len(self.DataEx)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.EventLen)
        data = CommFunc.WriteString(data, self.EventLen, self.EventName)
        data = CommFunc.WriteDWORD(data, self.Exp)
        data = CommFunc.WriteDWORD(data, self.ExpPoint)
        data = CommFunc.WriteBYTE(data, self.MoneyLen)
        for i in range(self.MoneyLen):
            data = CommFunc.WriteString(data, self.MoneyList[i].GetLength(), self.MoneyList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ItemLen)
        for i in range(self.ItemLen):
            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
        data = CommFunc.WriteWORD(data, self.DataLen)
        data = CommFunc.WriteString(data, self.DataLen, self.DataEx)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                EventLen:%d,
                                EventName:%s,
                                Exp:%d,
                                ExpPoint:%d,
                                MoneyLen:%d,
                                MoneyList:%s,
                                ItemLen:%d,
                                ItemList:%s,
                                DataLen:%d,
                                DataEx:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.EventLen,
                                self.EventName,
                                self.Exp,
                                self.ExpPoint,
                                self.MoneyLen,
                                "...",
                                self.ItemLen,
                                "...",
                                self.DataLen,
                                self.DataEx
                                )
        return DumpString
m_NAtagMCGiveAwardInfo=tagMCGiveAwardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGiveAwardInfo.Head.Cmd,m_NAtagMCGiveAwardInfo.Head.SubCmd))] = m_NAtagMCGiveAwardInfo
#------------------------------------------------------
@@ -38101,6 +38340,8 @@
    DayNum = 0    #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取
    Count = 0    #(BYTE Count)// 奖励物品数
    AwardItemList = list()    #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表
    CountEx = 0    #(BYTE CountEx)// 额外奖励物品数
    AwardItemListEx = list()    #(vector<tagMCActLoginNewItem> AwardItemListEx)//  额外奖励物品列表
    data = None
    def __init__(self):
@@ -38115,12 +38356,19 @@
            temAwardItemList = tagMCActLoginNewItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.CountEx):
            temAwardItemListEx = tagMCActLoginNewItem()
            _pos = temAwardItemListEx.ReadData(_lpData, _pos)
            self.AwardItemListEx.append(temAwardItemListEx)
        return _pos
    def Clear(self):
        self.DayNum = 0
        self.Count = 0
        self.AwardItemList = list()
        self.CountEx = 0
        self.AwardItemListEx = list()
        return
    def GetLength(self):
@@ -38129,6 +38377,9 @@
        length += 1
        for i in range(self.Count):
            length += self.AwardItemList[i].GetLength()
        length += 1
        for i in range(self.CountEx):
            length += self.AwardItemListEx[i].GetLength()
        return length
@@ -38138,17 +38389,24 @@
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.CountEx)
        for i in range(self.CountEx):
            data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                DayNum:%d,
                                Count:%d,
                                AwardItemList:%s
                                AwardItemList:%s,
                                CountEx:%d,
                                AwardItemListEx:%s
                                '''\
                                %(
                                self.DayNum,
                                self.Count,
                                "...",
                                self.CountEx,
                                "..."
                                )
        return DumpString
@@ -38162,6 +38420,7 @@
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    RepSignMoneyType = 0    #(BYTE RepSignMoneyType)// 补签消耗货币类型
    RepSignMoneyValue = 0    #(DWORD RepSignMoneyValue)// 补签消耗货币值
    AwardExCTGID = 0    #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励
    DayCount = 0    #(BYTE DayCount)
    AwardDayList = list()    #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表
    data = None
@@ -38181,6 +38440,7 @@
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DayCount):
            temAwardDayList = tagMCActLoginNewDay()
@@ -38199,6 +38459,7 @@
        self.LimitLV = 0
        self.RepSignMoneyType = 0
        self.RepSignMoneyValue = 0
        self.AwardExCTGID = 0
        self.DayCount = 0
        self.AwardDayList = list()
        return
@@ -38212,6 +38473,7 @@
        length += 2
        length += 1
        length += 4
        length += 2
        length += 1
        for i in range(self.DayCount):
            length += self.AwardDayList[i].GetLength()
@@ -38227,6 +38489,7 @@
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.RepSignMoneyType)
        data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue)
        data = CommFunc.WriteWORD(data, self.AwardExCTGID)
        data = CommFunc.WriteBYTE(data, self.DayCount)
        for i in range(self.DayCount):
            data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer())
@@ -38241,6 +38504,7 @@
                                LimitLV:%d,
                                RepSignMoneyType:%d,
                                RepSignMoneyValue:%d,
                                AwardExCTGID:%d,
                                DayCount:%d,
                                AwardDayList:%s
                                '''\
@@ -38252,6 +38516,7 @@
                                self.LimitLV,
                                self.RepSignMoneyType,
                                self.RepSignMoneyValue,
                                self.AwardExCTGID,
                                self.DayCount,
                                "..."
                                )
@@ -38271,7 +38536,8 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    # 活动编号
                  ("LoginAward", c_int),    # 是否已领取,按天索引0代表第1天记录当天是否已领取
                  ("LoginAward", c_int),    # 普通奖励领取记录,按天对应二进制位记录是否已领取
                  ("LoginAwardEx", c_int),    # 额外奖励领取记录,按天对应二进制位记录是否已领取
                  ]
    def __init__(self):
@@ -38290,6 +38556,7 @@
        self.SubCmd = 0x70
        self.ActNum = 0
        self.LoginAward = 0
        self.LoginAwardEx = 0
        return
    def GetLength(self):
@@ -38303,19 +38570,402 @@
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                LoginAward:%d
                                LoginAward:%d,
                                LoginAwardEx:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.LoginAward
                                self.LoginAward,
                                self.LoginAwardEx
                                )
        return DumpString
m_NAtagMCActLoginPlayerInfoNew=tagMCActLoginPlayerInfoNew()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginPlayerInfoNew.Cmd,m_NAtagMCActLoginPlayerInfoNew.SubCmd))] = m_NAtagMCActLoginPlayerInfoNew
#------------------------------------------------------
# AA 88 轮回殿活动信息 #tagMCActLunhuidianInfo
class  tagMCActLunhuidianItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCActLunhuidianItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 88 轮回殿活动信息 //tagMCActLunhuidianInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCActLunhuidianAward(Structure):
    AwardIndex = 0    #(BYTE AwardIndex)// 奖励记录索引 0~30
    NeedValue = 0    #(DWORD NeedValue)// 奖励所需值
    Count = 0    #(BYTE Count)// 奖励物品数
    AwardItemList = list()    #(vector<tagMCActLunhuidianItem> AwardItemList)// 奖励物品列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAwardItemList = tagMCActLunhuidianItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.AwardIndex = 0
        self.NeedValue = 0
        self.Count = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.AwardIndex)
        data = CommFunc.WriteDWORD(data, self.NeedValue)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                AwardIndex:%d,
                                NeedValue:%d,
                                Count:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.AwardIndex,
                                self.NeedValue,
                                self.Count,
                                "..."
                                )
        return DumpString
class  tagMCActLunhuidianRound(Structure):
    RoundType = 0    #(BYTE RoundType)// 轮回类型
    AwardType = 0    #(BYTE AwardType)// 奖励类型 1-消耗货币;2-寻宝次数
    AwardTypeValue = 0    #(DWORD AwardTypeValue)// 奖励类型对应值,消耗货币时为对应的货币类型,寻宝时为对应的寻宝类型
    RoundMax = 0    #(BYTE RoundMax)// 最大可循环轮次
    AwardCount = 0    #(BYTE AwardCount)
    AwardList = list()    #(vector<tagMCActLunhuidianAward> AwardList)// 每轮奖励列表
    CTGIDCount = 0    #(BYTE CTGIDCount)
    CTGIDList = list()    #(vector<WORD> CTGIDList)// CTGID列表
    ShopType = 0    #(WORD ShopType)// 开放商店类型,可能为0不开放
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.RoundType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardTypeValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardCount):
            temAwardList = tagMCActLunhuidianAward()
            _pos = temAwardList.ReadData(_lpData, _pos)
            self.AwardList.append(temAwardList)
        self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.CTGIDCount):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.CTGIDList.append(value)
        self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.RoundType = 0
        self.AwardType = 0
        self.AwardTypeValue = 0
        self.RoundMax = 0
        self.AwardCount = 0
        self.AwardList = list()
        self.CTGIDCount = 0
        self.CTGIDList = list()
        self.ShopType = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 4
        length += 1
        length += 1
        for i in range(self.AwardCount):
            length += self.AwardList[i].GetLength()
        length += 1
        length += 2 * self.CTGIDCount
        length += 2
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.RoundType)
        data = CommFunc.WriteBYTE(data, self.AwardType)
        data = CommFunc.WriteDWORD(data, self.AwardTypeValue)
        data = CommFunc.WriteBYTE(data, self.RoundMax)
        data = CommFunc.WriteBYTE(data, self.AwardCount)
        for i in range(self.AwardCount):
            data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.CTGIDCount)
        for i in range(self.CTGIDCount):
            data = CommFunc.WriteWORD(data, self.CTGIDList[i])
        data = CommFunc.WriteWORD(data, self.ShopType)
        return data
    def OutputString(self):
        DumpString = '''
                                RoundType:%d,
                                AwardType:%d,
                                AwardTypeValue:%d,
                                RoundMax:%d,
                                AwardCount:%d,
                                AwardList:%s,
                                CTGIDCount:%d,
                                CTGIDList:%s,
                                ShopType:%d
                                '''\
                                %(
                                self.RoundType,
                                self.AwardType,
                                self.AwardTypeValue,
                                self.RoundMax,
                                self.AwardCount,
                                "...",
                                self.CTGIDCount,
                                "...",
                                self.ShopType
                                )
        return DumpString
class  tagMCActLunhuidianInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)// 活动编号
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    RoundCount = 0    #(BYTE RoundCount)
    RoundList = list()    #(vector<tagMCActLunhuidianRound> RoundList)// 轮回列表,支持多个不同类型轮回同时开启
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x88
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RoundCount):
            temRoundList = tagMCActLunhuidianRound()
            _pos = temRoundList.ReadData(_lpData, _pos)
            self.RoundList.append(temRoundList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x88
        self.ActNum = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.ResetType = 0
        self.LimitLV = 0
        self.RoundCount = 0
        self.RoundList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 10
        length += 10
        length += 1
        length += 2
        length += 1
        for i in range(self.RoundCount):
            length += self.RoundList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.RoundCount)
        for i in range(self.RoundCount):
            data = CommFunc.WriteString(data, self.RoundList[i].GetLength(), self.RoundList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                ResetType:%d,
                                LimitLV:%d,
                                RoundCount:%d,
                                RoundList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.StartDate,
                                self.EndtDate,
                                self.ResetType,
                                self.LimitLV,
                                self.RoundCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActLunhuidianInfo=tagMCActLunhuidianInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianInfo.Head.Cmd,m_NAtagMCActLunhuidianInfo.Head.SubCmd))] = m_NAtagMCActLunhuidianInfo
#------------------------------------------------------
# AA 89 轮回殿活动玩家信息 #tagMCActLunhuidianPlayerInfo
class  tagMCActLunhuidianPlayerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    # 活动编号
                  ("RoundType", c_ubyte),    # 轮回类型
                  ("CurRound", c_ubyte),    # 当前轮次
                  ("CurValue", c_int),    # 累计值
                  ("AwardRecord", c_int),    # 当前轮次奖励领奖记录,按奖励索引二进制位存储是否已领取,所有奖励已领取后自动进入下一轮,且重置该奖励状态
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x89
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x89
        self.ActNum = 0
        self.RoundType = 0
        self.CurRound = 0
        self.CurValue = 0
        self.AwardRecord = 0
        return
    def GetLength(self):
        return sizeof(tagMCActLunhuidianPlayerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 89 轮回殿活动玩家信息 //tagMCActLunhuidianPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                RoundType:%d,
                                CurRound:%d,
                                CurValue:%d,
                                AwardRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.RoundType,
                                self.CurRound,
                                self.CurValue,
                                self.AwardRecord
                                )
        return DumpString
m_NAtagMCActLunhuidianPlayerInfo=tagMCActLunhuidianPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianPlayerInfo.Cmd,m_NAtagMCActLunhuidianPlayerInfo.SubCmd))] = m_NAtagMCActLunhuidianPlayerInfo
#------------------------------------------------------
@@ -43647,6 +44297,510 @@
m_NAtagMCCrossActHorsePetTrainInfo=tagMCCrossActHorsePetTrainInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActHorsePetTrainInfo.Head.Cmd,m_NAtagMCCrossActHorsePetTrainInfo.Head.SubCmd))] = m_NAtagMCCrossActHorsePetTrainInfo
#------------------------------------------------------
# AA 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo
class  tagMCCrossActLianqiItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCCrossActLianqiItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 90 炼器跨服活动信息 //tagMCCrossActLianqiInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCCrossActLianqiAwardEx(Structure):
    NeedScore = 0    #(DWORD NeedScore)// 额外奖励所需积分
    Count = 0    #(BYTE Count)// 额外奖励物品数
    AwardItemList = list()    #(vector<tagMCCrossActLianqiItem> AwardItemList)// 额外奖励物品列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAwardItemList = tagMCCrossActLianqiItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.NeedScore = 0
        self.Count = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.NeedScore)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                NeedScore:%d,
                                Count:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.NeedScore,
                                self.Count,
                                "..."
                                )
        return DumpString
class  tagMCCrossActLianqiBillard(Structure):
    Rank = 0    #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
    Count = 0    #(BYTE Count)// 奖励物品数
    AwardItemList = list()    #(vector<tagMCCrossActLianqiItem> AwardItemList)// 奖励物品列表
    NeedScore = 0    #(DWORD NeedScore)// 上榜所需积分
    CountEx = 0    #(BYTE CountEx)// 额外奖励数
    AwardItemExList = list()    #(vector<tagMCCrossActLianqiAwardEx> AwardItemExList)// 额外奖励列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAwardItemList = tagMCCrossActLianqiItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.CountEx):
            temAwardItemExList = tagMCCrossActLianqiAwardEx()
            _pos = temAwardItemExList.ReadData(_lpData, _pos)
            self.AwardItemExList.append(temAwardItemExList)
        return _pos
    def Clear(self):
        self.Rank = 0
        self.Count = 0
        self.AwardItemList = list()
        self.NeedScore = 0
        self.CountEx = 0
        self.AwardItemExList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.AwardItemList[i].GetLength()
        length += 4
        length += 1
        for i in range(self.CountEx):
            length += self.AwardItemExList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.Rank)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        data = CommFunc.WriteDWORD(data, self.NeedScore)
        data = CommFunc.WriteBYTE(data, self.CountEx)
        for i in range(self.CountEx):
            data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Rank:%d,
                                Count:%d,
                                AwardItemList:%s,
                                NeedScore:%d,
                                CountEx:%d,
                                AwardItemExList:%s
                                '''\
                                %(
                                self.Rank,
                                self.Count,
                                "...",
                                self.NeedScore,
                                self.CountEx,
                                "..."
                                )
        return DumpString
class  tagMCCrossActLianqiInfo(Structure):
    Head = tagHead()
    ServerInfoLen = 0    #(BYTE ServerInfoLen)
    ServerIDRangeInfo = ""    #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
    GroupValue1 = 0    #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    JoinStartTime = ""    #(char JoinStartTime[5])// 参与开始时间点 mm:ss
    JoinEndTime = ""    #(char JoinEndTime[5])// 参与结束时间点 mm:ss
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    PersonalBillCount = 0    #(BYTE PersonalBillCount)
    PersonalBillboardInfoList = list()    #(vector<tagMCCrossActLianqiBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x90
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
        self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
        self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PersonalBillCount):
            temPersonalBillboardInfoList = tagMCCrossActLianqiBillard()
            _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos)
            self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x90
        self.ServerInfoLen = 0
        self.ServerIDRangeInfo = ""
        self.GroupValue1 = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.JoinStartTime = ""
        self.JoinEndTime = ""
        self.LimitLV = 0
        self.PersonalBillCount = 0
        self.PersonalBillboardInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += len(self.ServerIDRangeInfo)
        length += 1
        length += 10
        length += 10
        length += 5
        length += 5
        length += 2
        length += 1
        for i in range(self.PersonalBillCount):
            length += self.PersonalBillboardInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
        data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
        data = CommFunc.WriteBYTE(data, self.GroupValue1)
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteString(data, 5, self.JoinStartTime)
        data = CommFunc.WriteString(data, 5, self.JoinEndTime)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
        for i in range(self.PersonalBillCount):
            data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ServerInfoLen:%d,
                                ServerIDRangeInfo:%s,
                                GroupValue1:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                JoinStartTime:%s,
                                JoinEndTime:%s,
                                LimitLV:%d,
                                PersonalBillCount:%d,
                                PersonalBillboardInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ServerInfoLen,
                                self.ServerIDRangeInfo,
                                self.GroupValue1,
                                self.StartDate,
                                self.EndtDate,
                                self.JoinStartTime,
                                self.JoinEndTime,
                                self.LimitLV,
                                self.PersonalBillCount,
                                "..."
                                )
        return DumpString
m_NAtagMCCrossActLianqiInfo=tagMCCrossActLianqiInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActLianqiInfo.Head.Cmd,m_NAtagMCCrossActLianqiInfo.Head.SubCmd))] = m_NAtagMCCrossActLianqiInfo
#------------------------------------------------------
# AA 91 炼器活动玩家信息 #tagMCActLianqiPlayerInfo
class  tagMCActLianqiTileMove(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Row", c_ubyte),    # 行,0为第1行
                  ("Col", c_ubyte),    # 列,0为第1列
                  ("ToRow", c_ubyte),    # 移动到目标行
                  ("ToCol", c_ubyte),    # 移动到目标列
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Row = 0
        self.Col = 0
        self.ToRow = 0
        self.ToCol = 0
        return
    def GetLength(self):
        return sizeof(tagMCActLianqiTileMove)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 91 炼器活动玩家信息 //tagMCActLianqiPlayerInfo:
                                Row:%d,
                                Col:%d,
                                ToRow:%d,
                                ToCol:%d
                                '''\
                                %(
                                self.Row,
                                self.Col,
                                self.ToRow,
                                self.ToCol
                                )
        return DumpString
class  tagMCActLianqiPlayerInfo(Structure):
    Head = tagHead()
    Score = 0    #(DWORD Score)// 当前活动积分
    ScoreHighest = 0    #(DWORD ScoreHighest)// 当前活动最高积分,即上榜积分
    Energy = 0    #(WORD Energy)// 当前体力
    EnergyTime = 0    #(DWORD EnergyTime)// 上次恢复体力时间戳,为0时不用处理倒计时
    LVAwardMax = 0    #(DWORD LVAwardMax)// 已激活的最大合成奖励等级
    LVAwardState = 0    #(DWORD LVAwardState)// 最大合成等级奖励领取记录,按等级二进制位存储是否已领取
    UseItemLen = 0    #(BYTE UseItemLen)
    UseItemCntList = list()    #(vector<WORD> UseItemCntList)// 本局已使用辅助道具次数 [辅助道具1使用次数, ...]
    GridDataLen = 0    #(BYTE GridDataLen)// 格子数据长度
    GridData = ""    #(String GridData)// 格子二维行列数据,一定会同步,直接替换,行从上往下排 [[第1行格子1,格子2, ...], ...]
    OPType = 0    #(BYTE OPType)// 0-无(如初始化,GM等后端直接设置);1-移动;2-使用道具;3-重新开始;如果是因为操作引起的格子数据变化,则在相关操作表现完毕后再展示最新行列数据,否则直接变更
    MoveCount = 0    #(BYTE MoveCount)
    MoveList = list()    #(vector<tagMCActLianqiTileMove> MoveList)// 图块移动列表,可能没有数据,有的话先表现移动
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x91
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ScoreHighest,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LVAwardMax,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LVAwardState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.UseItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.UseItemLen):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.UseItemCntList.append(value)
        self.GridDataLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GridData,_pos = CommFunc.ReadString(_lpData, _pos,self.GridDataLen)
        self.OPType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MoveCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.MoveCount):
            temMoveList = tagMCActLianqiTileMove()
            _pos = temMoveList.ReadData(_lpData, _pos)
            self.MoveList.append(temMoveList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x91
        self.Score = 0
        self.ScoreHighest = 0
        self.Energy = 0
        self.EnergyTime = 0
        self.LVAwardMax = 0
        self.LVAwardState = 0
        self.UseItemLen = 0
        self.UseItemCntList = list()
        self.GridDataLen = 0
        self.GridData = ""
        self.OPType = 0
        self.MoveCount = 0
        self.MoveList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 2
        length += 4
        length += 4
        length += 4
        length += 1
        length += 2 * self.UseItemLen
        length += 1
        length += len(self.GridData)
        length += 1
        length += 1
        for i in range(self.MoveCount):
            length += self.MoveList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.Score)
        data = CommFunc.WriteDWORD(data, self.ScoreHighest)
        data = CommFunc.WriteWORD(data, self.Energy)
        data = CommFunc.WriteDWORD(data, self.EnergyTime)
        data = CommFunc.WriteDWORD(data, self.LVAwardMax)
        data = CommFunc.WriteDWORD(data, self.LVAwardState)
        data = CommFunc.WriteBYTE(data, self.UseItemLen)
        for i in range(self.UseItemLen):
            data = CommFunc.WriteWORD(data, self.UseItemCntList[i])
        data = CommFunc.WriteBYTE(data, self.GridDataLen)
        data = CommFunc.WriteString(data, self.GridDataLen, self.GridData)
        data = CommFunc.WriteBYTE(data, self.OPType)
        data = CommFunc.WriteBYTE(data, self.MoveCount)
        for i in range(self.MoveCount):
            data = CommFunc.WriteString(data, self.MoveList[i].GetLength(), self.MoveList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Score:%d,
                                ScoreHighest:%d,
                                Energy:%d,
                                EnergyTime:%d,
                                LVAwardMax:%d,
                                LVAwardState:%d,
                                UseItemLen:%d,
                                UseItemCntList:%s,
                                GridDataLen:%d,
                                GridData:%s,
                                OPType:%d,
                                MoveCount:%d,
                                MoveList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Score,
                                self.ScoreHighest,
                                self.Energy,
                                self.EnergyTime,
                                self.LVAwardMax,
                                self.LVAwardState,
                                self.UseItemLen,
                                "...",
                                self.GridDataLen,
                                self.GridData,
                                self.OPType,
                                self.MoveCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActLianqiPlayerInfo=tagMCActLianqiPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLianqiPlayerInfo.Head.Cmd,m_NAtagMCActLianqiPlayerInfo.Head.SubCmd))] = m_NAtagMCActLianqiPlayerInfo
#------------------------------------------------------
@@ -56365,6 +57519,7 @@
                  ("DayWinCount", c_ubyte),    # 当日已胜利次数
                  ("DayBuyCount", c_ubyte),    # 当日已购买次数
                  ("DayItemAddCount", c_ubyte),    # 当日物品增加次数
                  ("DayRefreshCount", c_ushort),    # 今日已刷新匹配次数
                  ]
    def __init__(self):
@@ -56390,6 +57545,7 @@
        self.DayWinCount = 0
        self.DayBuyCount = 0
        self.DayItemAddCount = 0
        self.DayRefreshCount = 0
        return
    def GetLength(self):
@@ -56410,7 +57566,8 @@
                                DayPKCount:%d,
                                DayWinCount:%d,
                                DayBuyCount:%d,
                                DayItemAddCount:%d
                                DayItemAddCount:%d,
                                DayRefreshCount:%d
                                '''\
                                %(
                                self.Cmd,
@@ -56423,7 +57580,8 @@
                                self.DayPKCount,
                                self.DayWinCount,
                                self.DayBuyCount,
                                self.DayItemAddCount
                                self.DayItemAddCount,
                                self.DayRefreshCount
                                )
        return DumpString