ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -6991,6 +6991,58 @@
#------------------------------------------------------
# A3 19 分包下载奖励记录 #tagMCPackDownloadRecord
class  tagMCPackDownloadRecord(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Record", c_ubyte),    # 0-未领取 1-已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x19
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x19
        self.Record = 0
        return
    def GetLength(self):
        return sizeof(tagMCPackDownloadRecord)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 19 分包下载奖励记录 //tagMCPackDownloadRecord:
                                Cmd:%s,
                                SubCmd:%s,
                                Record:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Record
                                )
        return DumpString
m_NAtagMCPackDownloadRecord=tagMCPackDownloadRecord()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPackDownloadRecord.Cmd,m_NAtagMCPackDownloadRecord.SubCmd))] = m_NAtagMCPackDownloadRecord
#------------------------------------------------------
#A3 0B 玩家等级奖励领取记录信息 #tagMCPlayerLVAwardGetRecord
class  tagMCPlayerLVAwardGetRecord(Structure):
@@ -8625,6 +8677,45 @@
#------------------------------------------------------
# A3 51 寻宝功能信息 #tagMCTreasureInfo
class  tagMCTreasureWish(Structure):
    _pack_ = 1
    _fields_ = [
                  ("WishID", c_ushort),    # 寻宝物品库中的数据ID,注意不是库ID
                  ("OutCnt", 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.WishID = 0
        self.OutCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCTreasureWish)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
                                WishID:%d,
                                OutCnt:%d
                                '''\
                                %(
                                self.WishID,
                                self.OutCnt
                                )
        return DumpString
class  tagMCTreasureGridLimit(Structure):
    _pack_ = 1
    _fields_ = [
@@ -8673,6 +8764,8 @@
    TreasureCntAward = 0    #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
    GridLimitCnt = 0    #(BYTE GridLimitCnt)
    GridLimitCntList = list()    #(vector<tagMCTreasureGridLimit> GridLimitCntList)//有限制抽取次数的格子次数信息
    WishCnt = 0    #(BYTE WishCnt)
    WishList = list()    #(vector<tagMCTreasureWish> WishList)//心愿物品信息
    data = None
    def __init__(self):
@@ -8692,6 +8785,11 @@
            temGridLimitCntList = tagMCTreasureGridLimit()
            _pos = temGridLimitCntList.ReadData(_lpData, _pos)
            self.GridLimitCntList.append(temGridLimitCntList)
        self.WishCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.WishCnt):
            temWishList = tagMCTreasureWish()
            _pos = temWishList.ReadData(_lpData, _pos)
            self.WishList.append(temWishList)
        return _pos
    def Clear(self):
@@ -8703,6 +8801,8 @@
        self.TreasureCntAward = 0
        self.GridLimitCnt = 0
        self.GridLimitCntList = list()
        self.WishCnt = 0
        self.WishList = list()
        return
    def GetLength(self):
@@ -8716,6 +8816,9 @@
        length += 1
        for i in range(self.GridLimitCnt):
            length += self.GridLimitCntList[i].GetLength()
        length += 1
        for i in range(self.WishCnt):
            length += self.WishList[i].GetLength()
        return length
@@ -8730,6 +8833,9 @@
        data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
        for i in range(self.GridLimitCnt):
            data = CommFunc.WriteString(data, self.GridLimitCntList[i].GetLength(), self.GridLimitCntList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.WishCnt)
        for i in range(self.WishCnt):
            data = CommFunc.WriteString(data, self.WishList[i].GetLength(), self.WishList[i].GetBuffer())
        return data
    def OutputString(self):
@@ -8741,7 +8847,9 @@
                                FreeCountToday:%d,
                                TreasureCntAward:%d,
                                GridLimitCnt:%d,
                                GridLimitCntList:%s
                                GridLimitCntList:%s,
                                WishCnt:%d,
                                WishList:%s
                                '''\
                                %(
                                self.TreasureType,
@@ -8751,6 +8859,8 @@
                                self.FreeCountToday,
                                self.TreasureCntAward,
                                self.GridLimitCnt,
                                "...",
                                self.WishCnt,
                                "..."
                                )
        return DumpString
@@ -28909,454 +29019,21 @@
#------------------------------------------------------
# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
# AB 05 开服庆典信息 #tagSCOSACelebrationInfo
class  tagMCBossFirstKillState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),
                  ("FKState", c_int),    # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
                  ]
    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.NPCID = 0
        self.FKState = 0
        return
    def GetLength(self):
        return sizeof(tagMCBossFirstKillState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
                                NPCID:%d,
                                FKState:%d
                                '''\
                                %(
                                self.NPCID,
                                self.FKState
                                )
        return DumpString
class  tagMCBossFirstKillStateInfo(Structure):
    Head = tagHead()
    BossCount = 0    #(BYTE BossCount)
    FirstKillStateList = list()    #(vector<tagMCBossFirstKillState> FirstKillStateList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.BossCount):
            temFirstKillStateList = tagMCBossFirstKillState()
            _pos = temFirstKillStateList.ReadData(_lpData, _pos)
            self.FirstKillStateList.append(temFirstKillStateList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x01
        self.BossCount = 0
        self.FirstKillStateList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.BossCount):
            length += self.FirstKillStateList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.BossCount)
        for i in range(self.BossCount):
            data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                BossCount:%d,
                                FirstKillStateList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.BossCount,
                                "..."
                                )
        return DumpString
m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
#------------------------------------------------------
# AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
class  tagMCBossRebornData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ActID", c_ubyte),    #活动ID
                  ("CurTimes", c_ushort),    #已完成次数
                  ("GotTimes", c_ushort),    #已领取次数
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ActID = 0
        self.CurTimes = 0
        self.GotTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCBossRebornData)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 03 Boss复活玩家活动信息 //tagMCBossRebornPlayerInfo:
                                ActID:%d,
                                CurTimes:%d,
                                GotTimes:%d
                                '''\
                                %(
                                self.ActID,
                                self.CurTimes,
                                self.GotTimes
                                )
        return DumpString
class  tagMCBossRebornPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)//活动个数
    DataList = list()    #(vector<tagMCBossRebornData> DataList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x03
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temDataList = tagMCBossRebornData()
            _pos = temDataList.ReadData(_lpData, _pos)
            self.DataList.append(temDataList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x03
        self.Count = 0
        self.DataList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.DataList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.DataList[i].GetLength(), self.DataList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                DataList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
#------------------------------------------------------
# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
class  tagMCBossRebornAwardItem(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(tagMCBossRebornAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCBossRebornTaskInfo(Structure):
    TaskID = 0    #(BYTE TaskID)// id
    TotalTimes = 0    #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
    SingleTimes = 0    #(BYTE SingleTimes)// 单次领奖需要次数
    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
    AwardItem = list()    #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardItemCount):
            temAwardItem = tagMCBossRebornAwardItem()
            _pos = temAwardItem.ReadData(_lpData, _pos)
            self.AwardItem.append(temAwardItem)
        return _pos
    def Clear(self):
        self.TaskID = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.AwardItemCount = 0
        self.AwardItem = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 1
        length += 1
        for i in range(self.AwardItemCount):
            length += self.AwardItem[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.TaskID)
        data = CommFunc.WriteBYTE(data, self.TotalTimes)
        data = CommFunc.WriteBYTE(data, self.SingleTimes)
        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
        for i in range(self.AwardItemCount):
            data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                TaskID:%d,
                                TotalTimes:%d,
                                SingleTimes:%d,
                                AwardItemCount:%d,
                                AwardItem:%s
                                '''\
                                %(
                                self.TaskID,
                                self.TotalTimes,
                                self.SingleTimes,
                                self.AwardItemCount,
                                "..."
                                )
        return DumpString
class  tagMCBossRebornInfo(Structure):
    Head = tagHead()
    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)// 限制等级
    TaskCnt = 0    #(BYTE TaskCnt)
    TaskInfo = list()    #(vector<tagMCBossRebornTaskInfo> TaskInfo)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TaskCnt):
            temTaskInfo = tagMCBossRebornTaskInfo()
            _pos = temTaskInfo.ReadData(_lpData, _pos)
            self.TaskInfo.append(temTaskInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x04
        self.StartDate = ""
        self.EndtDate = ""
        self.ResetType = 0
        self.LimitLV = 0
        self.TaskCnt = 0
        self.TaskInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        length += 2
        length += 1
        for i in range(self.TaskCnt):
            length += self.TaskInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.TaskCnt)
        for i in range(self.TaskCnt):
            data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                ResetType:%d,
                                LimitLV:%d,
                                TaskCnt:%d,
                                TaskInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.ResetType,
                                self.LimitLV,
                                self.TaskCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
#------------------------------------------------------
# AB 19 炼制奖励信息 #tagMCRefineGiftInfo
class  tagMCRefineGiftInfo(Structure):
class  tagSCOSACelebrationInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ExpRefineStartTime", c_int),    # 经验炼制活动开始时间
                  ("MoneyRefineStartTime", c_int),    # 金币炼制活动开始时间
                  ("ExpRefineCnt", c_ubyte),    # 经验已炼制次数
                  ("MoneyRefineCnt", c_ubyte),    # 金币已炼制次数
                  ("PointTotal", c_int),    # 累计庆典积分
                  ("PointAward", c_int),    # 积分阶段奖励记录,按阶段积分排序后索引二进制存储是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x19
        self.SubCmd = 0x05
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -29366,105 +29043,35 @@
    def Clear(self):
        self.Cmd = 0xAB
        self.SubCmd = 0x19
        self.ExpRefineStartTime = 0
        self.MoneyRefineStartTime = 0
        self.ExpRefineCnt = 0
        self.MoneyRefineCnt = 0
        self.SubCmd = 0x05
        self.PointTotal = 0
        self.PointAward = 0
        return
    def GetLength(self):
        return sizeof(tagMCRefineGiftInfo)
        return sizeof(tagSCOSACelebrationInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 19 炼制奖励信息 //tagMCRefineGiftInfo:
        DumpString = '''// AB 05 开服庆典信息 //tagSCOSACelebrationInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ExpRefineStartTime:%d,
                                MoneyRefineStartTime:%d,
                                ExpRefineCnt:%d,
                                MoneyRefineCnt:%d
                                PointTotal:%d,
                                PointAward:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ExpRefineStartTime,
                                self.MoneyRefineStartTime,
                                self.ExpRefineCnt,
                                self.MoneyRefineCnt
                                self.PointTotal,
                                self.PointAward
                                )
        return DumpString
m_NAtagMCRefineGiftInfo=tagMCRefineGiftInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRefineGiftInfo.Cmd,m_NAtagMCRefineGiftInfo.SubCmd))] = m_NAtagMCRefineGiftInfo
#------------------------------------------------------
# AC 08 boss复活点数通知 #tagGCBossRebornPoint
class  tagGCBossRebornPoint(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Point", c_int),    # 复活点数
                  ("TotalPoint", c_int),    # 复活总点数
                  ("RebornCnt", c_ushort),    # 今日已复活次数
                  ("TotalRebornCnt", c_ushort),    # 每日可复活总次数,0为不限制
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAC
        self.SubCmd = 0x08
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xAC
        self.SubCmd = 0x08
        self.Point = 0
        self.TotalPoint = 0
        self.RebornCnt = 0
        self.TotalRebornCnt = 0
        return
    def GetLength(self):
        return sizeof(tagGCBossRebornPoint)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
                                Cmd:%s,
                                SubCmd:%s,
                                Point:%d,
                                TotalPoint:%d,
                                RebornCnt:%d,
                                TotalRebornCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Point,
                                self.TotalPoint,
                                self.RebornCnt,
                                self.TotalRebornCnt
                                )
        return DumpString
m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
#------------------------------------------------------
@@ -31527,6 +31134,118 @@
m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
#------------------------------------------------------
# B1 31 宿缘信息 #tagSCHeroFatesInfo
class  tagSCHeroFates(Structure):
    _pack_ = 1
    _fields_ = [
                  ("FatesID", c_ubyte),    # 宿缘ID
                  ("State", c_ubyte),    # 宿缘状态:0-未激活;1-已激活已领奖
                  ("FatesLV", c_ubyte),    # 宿缘等级,激活时为0级,升级后有升级属性
                  ]
    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.FatesID = 0
        self.State = 0
        self.FatesLV = 0
        return
    def GetLength(self):
        return sizeof(tagSCHeroFates)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 31 宿缘信息 //tagSCHeroFatesInfo:
                                FatesID:%d,
                                State:%d,
                                FatesLV:%d
                                '''\
                                %(
                                self.FatesID,
                                self.State,
                                self.FatesLV
                                )
        return DumpString
class  tagSCHeroFatesInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    FatesList = list()    #(vector<tagSCHeroFates> FatesList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x31
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temFatesList = tagSCHeroFates()
            _pos = temFatesList.ReadData(_lpData, _pos)
            self.FatesList.append(temFatesList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x31
        self.Count = 0
        self.FatesList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.FatesList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.FatesList[i].GetLength(), self.FatesList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                FatesList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagSCHeroFatesInfo=tagSCHeroFatesInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHeroFatesInfo.Head.Cmd,m_NAtagSCHeroFatesInfo.Head.SubCmd))] = m_NAtagSCHeroFatesInfo
#------------------------------------------------------
@@ -38091,7 +37810,7 @@
    BatLen = 0    #(WORD BatLen)
    BatStatMsg = ""    #(String BatStatMsg)//战斗相关统计信息
    PathDate = ""    #(char PathDate[8])//战报路径日期, yyyyMMdd, 为空时代表公共类的战报,不为空时为玩家个人类战报
    GUID = ""    #(char GUID[40])//战报guid,前端根据功能MapID判断是否跨服功能,是的话从跨服服务器下载战报,否的话从本机下载
    GUID = ""    #(char GUID[40])//战报guid,前端根据功能MapID判断是否跨服功能,是的话从跨服服务器下载战报,否的话从本服下载
    data = None
    def __init__(self):
@@ -48176,6 +47895,98 @@
#------------------------------------------------------
# C2 02 跨服通用信息包 #tagSSCommMsg
class  tagSSCommMsg(Structure):
    Head = tagHead()
    FromServerID = 0    #(DWORD FromServerID)//哪个服发的
    ServerTime = 0    #(DWORD ServerTime)//来源服务器时间戳
    TypeLen = 0    #(BYTE TypeLen)
    MsgType = ""    #(String MsgType)
    Len = 0    #(DWORD Len)
    Data = ""    #(String Data)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xC2
        self.Head.SubCmd = 0x02
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
        self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xC2
        self.Head.SubCmd = 0x02
        self.FromServerID = 0
        self.ServerTime = 0
        self.TypeLen = 0
        self.MsgType = ""
        self.Len = 0
        self.Data = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 1
        length += len(self.MsgType)
        length += 4
        length += len(self.Data)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.FromServerID)
        data = CommFunc.WriteDWORD(data, self.ServerTime)
        data = CommFunc.WriteBYTE(data, self.TypeLen)
        data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
        data = CommFunc.WriteDWORD(data, self.Len)
        data = CommFunc.WriteString(data, self.Len, self.Data)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                FromServerID:%d,
                                ServerTime:%d,
                                TypeLen:%d,
                                MsgType:%s,
                                Len:%d,
                                Data:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.FromServerID,
                                self.ServerTime,
                                self.TypeLen,
                                self.MsgType,
                                self.Len,
                                self.Data
                                )
        return DumpString
m_NAtagSSCommMsg=tagSSCommMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCommMsg.Head.Cmd,m_NAtagSSCommMsg.Head.SubCmd))] = m_NAtagSSCommMsg
#------------------------------------------------------
# C2 01 跨服服务器间的测试包 #tagSSTest
class  tagSSTest(Structure):