hxp
7 天以前 8a132929e7184bc274b742d3e25b93782c65e9ef
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):
@@ -25067,58 +25119,6 @@
#------------------------------------------------------
# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
class  tagMCDayFreeGoldGiftState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DayFreeGoldGiftState", c_ubyte),    #每日免费直购礼包是否已领奖 0-未领 1-已领
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x24
        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 = 0x24
        self.DayFreeGoldGiftState = 0
        return
    def GetLength(self):
        return sizeof(tagMCDayFreeGoldGiftState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
                                Cmd:%s,
                                SubCmd:%s,
                                DayFreeGoldGiftState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DayFreeGoldGiftState
                                )
        return DumpString
m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
#------------------------------------------------------
# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
class  tagMCFeastLoginDayAwardItem(Structure):
@@ -27700,58 +27700,6 @@
#------------------------------------------------------
# AA 04 创角在线充值特惠信息 #tagMCOnlineRechargeTH
class  tagMCOnlineRechargeTH(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("AwardState", c_ubyte),    #是否已领取奖励
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x04
        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 = 0x04
        self.AwardState = 0
        return
    def GetLength(self):
        return sizeof(tagMCOnlineRechargeTH)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 04 创角在线充值特惠信息 //tagMCOnlineRechargeTH:
                                Cmd:%s,
                                SubCmd:%s,
                                AwardState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AwardState
                                )
        return DumpString
m_NAtagMCOnlineRechargeTH=tagMCOnlineRechargeTH()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlineRechargeTH.Cmd,m_NAtagMCOnlineRechargeTH.SubCmd))] = m_NAtagMCOnlineRechargeTH
#------------------------------------------------------
# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
class  tagMCRechargePrizeInfo(Structure):
@@ -29013,454 +28961,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):
@@ -29470,105 +28985,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
#------------------------------------------------------
@@ -30193,896 +29638,6 @@
#------------------------------------------------------
# B0 27 活跃放置信息 #tagMCActivityPlaceInfo
class  tagMCActivityPlaceInfo(Structure):
    Head = tagHead()
    StartTime = 0    #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
    PlaceCount = 0    #(BYTE PlaceCount)// 剩余未完成探索次数
    RewardCount = 0    #(BYTE RewardCount)// 累计未领取探索奖励次数
    RewardLen = 0    #(BYTE RewardLen)
    RewardInfo = ""    #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
    TodayExp = 0    #(DWORD TodayExp)
    TodayExpPoint = 0    #(DWORD TodayExpPoint)
    YestordayExp = 0    #(DWORD YestordayExp)
    YestordayExpPoint = 0    #(DWORD YestordayExpPoint)
    TotalCount = 0    #(DWORD TotalCount)// 累计活跃放置次数
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x27
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
        self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x27
        self.StartTime = 0
        self.PlaceCount = 0
        self.RewardCount = 0
        self.RewardLen = 0
        self.RewardInfo = ""
        self.TodayExp = 0
        self.TodayExpPoint = 0
        self.YestordayExp = 0
        self.YestordayExpPoint = 0
        self.TotalCount = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 1
        length += 1
        length += len(self.RewardInfo)
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.StartTime)
        data = CommFunc.WriteBYTE(data, self.PlaceCount)
        data = CommFunc.WriteBYTE(data, self.RewardCount)
        data = CommFunc.WriteBYTE(data, self.RewardLen)
        data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
        data = CommFunc.WriteDWORD(data, self.TodayExp)
        data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
        data = CommFunc.WriteDWORD(data, self.YestordayExp)
        data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
        data = CommFunc.WriteDWORD(data, self.TotalCount)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartTime:%d,
                                PlaceCount:%d,
                                RewardCount:%d,
                                RewardLen:%d,
                                RewardInfo:%s,
                                TodayExp:%d,
                                TodayExpPoint:%d,
                                YestordayExp:%d,
                                YestordayExpPoint:%d,
                                TotalCount:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartTime,
                                self.PlaceCount,
                                self.RewardCount,
                                self.RewardLen,
                                self.RewardInfo,
                                self.TodayExp,
                                self.TodayExpPoint,
                                self.YestordayExp,
                                self.YestordayExpPoint,
                                self.TotalCount
                                )
        return DumpString
m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
#------------------------------------------------------
# B0 01 新增协助 #tagGCAssistInfoList
class  tagGCAssistInfo(Structure):
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        return _pos
    def Clear(self):
        self.AssistGUID = ""
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        return data
    def OutputString(self):
        DumpString = '''
                                AssistGUID:%s,
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s
                                '''\
                                %(
                                self.AssistGUID,
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData
                                )
        return DumpString
class  tagGCAssistInfoList(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    AssistInfoList = list()    #(vector<tagGCAssistInfo> AssistInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x01
        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):
            temAssistInfoList = tagGCAssistInfo()
            _pos = temAssistInfoList.ReadData(_lpData, _pos)
            self.AssistInfoList.append(temAssistInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x01
        self.Count = 0
        self.AssistInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.AssistInfoList[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.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                AssistInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCAssistInfoList=tagGCAssistInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
#------------------------------------------------------
# B0 03 正在进行中的协助 #tagGCAssistingInfo
class  tagGCAssistingInfo(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x03
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x03
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCAssistingInfo=tagGCAssistingInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
#------------------------------------------------------
# B0 08 协助结束 #tagGCAssistOver
class  tagGCAssistOver(Structure):
    Head = tagHead()
    IsTagPlayerReason = 0    #(BYTE IsTagPlayerReason)//是否发布方原因
    ReasonLen = 0    #(BYTE ReasonLen)
    Reason = ""    #(String Reason)//原因
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x08
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x08
        self.IsTagPlayerReason = 0
        self.ReasonLen = 0
        self.Reason = ""
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += len(self.Reason)
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
        data = CommFunc.WriteBYTE(data, self.ReasonLen)
        data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                IsTagPlayerReason:%d,
                                ReasonLen:%d,
                                Reason:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IsTagPlayerReason,
                                self.ReasonLen,
                                self.Reason,
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCAssistOver=tagGCAssistOver()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
#------------------------------------------------------
# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
class  tagGCCanGetAssistThanksGiftCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CanGetCount", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x06
        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 = 0xB0
        self.SubCmd = 0x06
        self.CanGetCount = 0
        return
    def GetLength(self):
        return sizeof(tagGCCanGetAssistThanksGiftCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
                                Cmd:%s,
                                SubCmd:%s,
                                CanGetCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CanGetCount
                                )
        return DumpString
m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
#------------------------------------------------------
# B0 02 删除协助 #tagGCClearAssist
class  tagGCClearAssist(Structure):
    Head = tagHead()
    AssistGUID = ""    #(char AssistGUID[40])//协助GUID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x02
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x02
        self.AssistGUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.AssistGUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AssistGUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AssistGUID
                                )
        return DumpString
m_NAtagGCClearAssist=tagGCClearAssist()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
#------------------------------------------------------
#B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
class  tagFamilyArrestAwardReceiveState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ReceiveState", c_int),    #悬赏任务奖励领取情况
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x25
        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 = 0xB0
        self.SubCmd = 0x25
        self.ReceiveState = 0
        return
    def GetLength(self):
        return sizeof(tagFamilyArrestAwardReceiveState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B0 25 家族悬赏任务奖励领取情况 //tagFamilyArrestAwardReceiveState:
                                Cmd:%s,
                                SubCmd:%s,
                                ReceiveState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ReceiveState
                                )
        return DumpString
m_NAtagFamilyArrestAwardReceiveState=tagFamilyArrestAwardReceiveState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestAwardReceiveState.Cmd,m_NAtagFamilyArrestAwardReceiveState.SubCmd))] = m_NAtagFamilyArrestAwardReceiveState
#------------------------------------------------------
#B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
class  tagFamilyArrestOverState(Structure):
    ID = 0    #(DWORD ID)//悬赏任务ID
    NameLen = 0    #(WORD NameLen)//名字长度
    Name = ""    #(String Name)//size = NameLen
    OverState = 0    #(DWORD OverState)//任务完成情况
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.OverState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ID = 0
        self.NameLen = 0
        self.Name = ""
        self.OverState = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 2
        length += len(self.Name)
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.ID)
        data = CommFunc.WriteWORD(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteDWORD(data, self.OverState)
        return data
    def OutputString(self):
        DumpString = '''
                                ID:%d,
                                NameLen:%d,
                                Name:%s,
                                OverState:%d
                                '''\
                                %(
                                self.ID,
                                self.NameLen,
                                self.Name,
                                self.OverState
                                )
        return DumpString
class  tagFamilyArrestOverStateInfo(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    ArrestOverStateInfo = list()    #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x26
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temArrestOverStateInfo = tagFamilyArrestOverState()
            _pos = temArrestOverStateInfo.ReadData(_lpData, _pos)
            self.ArrestOverStateInfo.append(temArrestOverStateInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x26
        self.Count = 0
        self.ArrestOverStateInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.ArrestOverStateInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ArrestOverStateInfo[i].GetLength(), self.ArrestOverStateInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                ArrestOverStateInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo
#------------------------------------------------------
# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
class  tagGCGetAssistThanksGiftPreview(Structure):
    Head = tagHead()
    ItemID = 0    #(DWORD ItemID)//礼盒ID
    PlayerID = 0    #(DWORD PlayerID)//发起玩家ID
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    TimeStr = ""    #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
    ExtraAward = 0    #(BYTE ExtraAward)//是否有额外奖励
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x05
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x05
        self.ItemID = 0
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        self.TimeStr = ""
        self.ExtraAward = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        length += 19
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        data = CommFunc.WriteString(data, 19, self.TimeStr)
        data = CommFunc.WriteBYTE(data, self.ExtraAward)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemID:%d,
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s,
                                TimeStr:%s,
                                ExtraAward:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemID,
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData,
                                self.TimeStr,
                                self.ExtraAward
                                )
        return DumpString
m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
#------------------------------------------------------
# B0 37 淘金营地信息 #tagSCGoldRushCampInfo
class  tagSCGoldRushCamp(Structure):
@@ -31305,21 +29860,20 @@
#------------------------------------------------------
# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
# B0 40 游历信息 #tagSCTravelInfo
class  tagMCTodayAssistMoneyInfo(Structure):
class  tagSCTravelGrid(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TodayAssistMoney", c_ushort),    #今日已获得活跃令,不含社交加成
                  ("SocialMoney", c_ushort),    #社交额外加成
                  ("Row", c_ubyte),    #行,从1开始
                  ("Col", c_ubyte),    #列,从1开始
                  ("State", c_ubyte),    #状态:0-未点击;1-已开启;2-裂纹
                  ("Multi", c_ubyte),    #奖励倍值: 默认1倍;2-双倍;...
                  ("EventID", c_ushort),    #事件ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x07
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -31328,434 +29882,157 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x07
        self.TodayAssistMoney = 0
        self.SocialMoney = 0
        self.Row = 0
        self.Col = 0
        self.State = 0
        self.Multi = 0
        self.EventID = 0
        return
    def GetLength(self):
        return sizeof(tagMCTodayAssistMoneyInfo)
        return sizeof(tagSCTravelGrid)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                TodayAssistMoney:%d,
                                SocialMoney:%d
        DumpString = '''// B0 40 游历信息 //tagSCTravelInfo:
                                Row:%d,
                                Col:%d,
                                State:%d,
                                Multi:%d,
                                EventID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TodayAssistMoney,
                                self.SocialMoney
                                self.Row,
                                self.Col,
                                self.State,
                                self.Multi,
                                self.EventID
                                )
        return DumpString
m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
#------------------------------------------------------
# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
class  tagGCAssistPlayerInfo(Structure):
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 1
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.Face,
                                self.FacePic
                                )
        return DumpString
class  tagGCUseAssistThanksGiftPreview(Structure):
class  tagSCTravelInfo(Structure):
    Head = tagHead()
    ItemID = 0    #(DWORD ItemID)//礼盒ID
    MapID = 0    #(DWORD MapID)
    LineID = 0    #(DWORD LineID)
    NPCID = 0    #(DWORD NPCID)
    ExDataLen = 0    #(WORD ExDataLen)
    ExData = ""    #(String ExData)//其他自定义数据
    AssistPlayerCount = 0    #(BYTE AssistPlayerCount)
    AssistPlayerList = list()    #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
    Energy = 0    #(BYTE Energy)//剩余体力
    EnergyTime = 0    #(DWORD EnergyTime)//上次恢复体力时间戳
    TravelCnt = 0    #(DWORD TravelCnt)//累计游历次数
    SceneryType = 0    #(BYTE SceneryType)//景观类型
    SceneryRow = 0    #(BYTE SceneryRow)//景观左上角所在行,从1开始
    SceneryCol = 0    #(BYTE SceneryCol)//景观左上角所在列,从1开始
    SceneryLVInfo = 0    #(DWORD SceneryLVInfo)//景观升级信息:0-还未处理景观升级;个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
    Result = 0    #(BYTE Result)//后端处理:0-无;1-常规;2-马车炸弹;3-传送门;4-景观;5-重置开始
    GridCnt = 0    #(BYTE GridCnt)
    GridList = list()    #(vector<tagSCTravelGrid> GridList)//格子信息列表,只同步变化的
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x04
        self.Head.SubCmd = 0x40
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
        self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AssistPlayerCount):
            temAssistPlayerList = tagGCAssistPlayerInfo()
            _pos = temAssistPlayerList.ReadData(_lpData, _pos)
            self.AssistPlayerList.append(temAssistPlayerList)
        self.Energy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TravelCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SceneryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SceneryRow,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SceneryCol,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SceneryLVInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Result,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GridCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GridCnt):
            temGridList = tagSCTravelGrid()
            _pos = temGridList.ReadData(_lpData, _pos)
            self.GridList.append(temGridList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x04
        self.ItemID = 0
        self.MapID = 0
        self.LineID = 0
        self.NPCID = 0
        self.ExDataLen = 0
        self.ExData = ""
        self.AssistPlayerCount = 0
        self.AssistPlayerList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.ExData)
        length += 1
        for i in range(self.AssistPlayerCount):
            length += self.AssistPlayerList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.LineID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteWORD(data, self.ExDataLen)
        data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
        data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
        for i in range(self.AssistPlayerCount):
            data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemID:%d,
                                MapID:%d,
                                LineID:%d,
                                NPCID:%d,
                                ExDataLen:%d,
                                ExData:%s,
                                AssistPlayerCount:%d,
                                AssistPlayerList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemID,
                                self.MapID,
                                self.LineID,
                                self.NPCID,
                                self.ExDataLen,
                                self.ExData,
                                self.AssistPlayerCount,
                                "..."
                                )
        return DumpString
m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
#------------------------------------------------------
# B0 20 膜拜信息列表 #tagGCWorshipInfoList
class  tagGCWorshipInfo(Structure):
    PlayerID = 0    #(DWORD PlayerID)// 目标玩家ID
    WorshipType = 0    #(BYTE WorshipType)// 膜拜类型
    WorshipValue = 0    #(DWORD WorshipValue)// 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
    InfoLen = 0    #(WORD InfoLen)
    PlayerInfo = ""    #(String PlayerInfo)// 玩家信息{k:v, ...}
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.WorshipType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.WorshipValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.InfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.PlayerInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.InfoLen)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.WorshipType = 0
        self.WorshipValue = 0
        self.InfoLen = 0
        self.PlayerInfo = ""
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += 4
        length += 2
        length += len(self.PlayerInfo)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.WorshipType)
        data = CommFunc.WriteDWORD(data, self.WorshipValue)
        data = CommFunc.WriteWORD(data, self.InfoLen)
        data = CommFunc.WriteString(data, self.InfoLen, self.PlayerInfo)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                WorshipType:%d,
                                WorshipValue:%d,
                                InfoLen:%d,
                                PlayerInfo:%s
                                '''\
                                %(
                                self.PlayerID,
                                self.WorshipType,
                                self.WorshipValue,
                                self.InfoLen,
                                self.PlayerInfo
                                )
        return DumpString
class  tagGCWorshipInfoList(Structure):
    Head = tagHead()
    WorshipCount = 0    #(BYTE WorshipCount)
    WorshipInfoList = list()    #(vector<tagGCWorshipInfo> WorshipInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.WorshipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.WorshipCount):
            temWorshipInfoList = tagGCWorshipInfo()
            _pos = temWorshipInfoList.ReadData(_lpData, _pos)
            self.WorshipInfoList.append(temWorshipInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x20
        self.WorshipCount = 0
        self.WorshipInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.WorshipCount):
            length += self.WorshipInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.WorshipCount)
        for i in range(self.WorshipCount):
            data = CommFunc.WriteString(data, self.WorshipInfoList[i].GetLength(), self.WorshipInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                WorshipCount:%d,
                                WorshipInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.WorshipCount,
                                "..."
                                )
        return DumpString
m_NAtagGCWorshipInfoList=tagGCWorshipInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipInfoList.Head.Cmd,m_NAtagGCWorshipInfoList.Head.SubCmd))] = m_NAtagGCWorshipInfoList
#------------------------------------------------------
# B0 21 膜拜结果 #tagGCWorshipResult
class  tagGCWorshipResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    # 目标玩家ID
                  ("WorshipType", c_ubyte),    # 膜拜类型
                  ("WorshipValue", c_int),    # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
                  ("Result", c_ubyte),    # 膜拜结果:0-成功;1-不存在该膜拜类型;2-不存在该目标膜拜;3-不能膜拜该目标;
                  ("MoneyType", c_ubyte),    # 货币类型
                  ("MoneyValue", c_int),    # 货币奖励
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x21
        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 = 0xB0
        self.SubCmd = 0x21
        self.PlayerID = 0
        self.WorshipType = 0
        self.WorshipValue = 0
        self.Head.SubCmd = 0x40
        self.Energy = 0
        self.EnergyTime = 0
        self.TravelCnt = 0
        self.SceneryType = 0
        self.SceneryRow = 0
        self.SceneryCol = 0
        self.SceneryLVInfo = 0
        self.Result = 0
        self.MoneyType = 0
        self.MoneyValue = 0
        self.GridCnt = 0
        self.GridList = list()
        return
    def GetLength(self):
        return sizeof(tagGCWorshipResult)
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4
        length += 4
        length += 1
        length += 1
        length += 1
        length += 4
        length += 1
        length += 1
        for i in range(self.GridCnt):
            length += self.GridList[i].GetLength()
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Energy)
        data = CommFunc.WriteDWORD(data, self.EnergyTime)
        data = CommFunc.WriteDWORD(data, self.TravelCnt)
        data = CommFunc.WriteBYTE(data, self.SceneryType)
        data = CommFunc.WriteBYTE(data, self.SceneryRow)
        data = CommFunc.WriteBYTE(data, self.SceneryCol)
        data = CommFunc.WriteDWORD(data, self.SceneryLVInfo)
        data = CommFunc.WriteBYTE(data, self.Result)
        data = CommFunc.WriteBYTE(data, self.GridCnt)
        for i in range(self.GridCnt):
            data = CommFunc.WriteString(data, self.GridList[i].GetLength(), self.GridList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''// B0 21 膜拜结果 //tagGCWorshipResult:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                WorshipType:%d,
                                WorshipValue:%d,
        DumpString = '''
                                Head:%s,
                                Energy:%d,
                                EnergyTime:%d,
                                TravelCnt:%d,
                                SceneryType:%d,
                                SceneryRow:%d,
                                SceneryCol:%d,
                                SceneryLVInfo:%d,
                                Result:%d,
                                MoneyType:%d,
                                MoneyValue:%d
                                GridCnt:%d,
                                GridList:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.WorshipType,
                                self.WorshipValue,
                                self.Head.OutputString(),
                                self.Energy,
                                self.EnergyTime,
                                self.TravelCnt,
                                self.SceneryType,
                                self.SceneryRow,
                                self.SceneryCol,
                                self.SceneryLVInfo,
                                self.Result,
                                self.MoneyType,
                                self.MoneyValue
                                self.GridCnt,
                                "..."
                                )
        return DumpString
m_NAtagGCWorshipResult=tagGCWorshipResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipResult.Cmd,m_NAtagGCWorshipResult.SubCmd))] = m_NAtagGCWorshipResult
m_NAtagSCTravelInfo=tagSCTravelInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTravelInfo.Head.Cmd,m_NAtagSCTravelInfo.Head.SubCmd))] = m_NAtagSCTravelInfo
#------------------------------------------------------
@@ -32799,6 +31076,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
#------------------------------------------------------
@@ -36785,6 +35174,7 @@
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    TitleID = 0    #(DWORD TitleID)//佩戴的称号
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    data = None
@@ -36809,6 +35199,7 @@
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
@@ -36829,6 +35220,7 @@
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.TitleID = 0
        self.ServerID = 0
        return
@@ -36845,6 +35237,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
@@ -36866,6 +35259,7 @@
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.TitleID)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        return data
@@ -36884,6 +35278,7 @@
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                TitleID:%d,
                                ServerID:%d
                                '''\
                                %(
@@ -36900,6 +35295,7 @@
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.TitleID,
                                self.ServerID
                                )
        return DumpString
@@ -36924,6 +35320,7 @@
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    TitleID = 0    #(DWORD TitleID)//佩戴的称号
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    TalkTime = 0    #(DWORD TalkTime)//该聊天发送时间戳
    data = None
@@ -36945,6 +35342,7 @@
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TalkTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
@@ -36961,6 +35359,7 @@
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.TitleID = 0
        self.ServerID = 0
        self.TalkTime = 0
        return
@@ -36976,6 +35375,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
@@ -36996,6 +35396,7 @@
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.TitleID)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.TalkTime)
        return data
@@ -37013,6 +35414,7 @@
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                TitleID:%d,
                                ServerID:%d,
                                TalkTime:%d
                                '''\
@@ -37028,6 +35430,7 @@
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.TitleID,
                                self.ServerID,
                                self.TalkTime
                                )
@@ -39330,6 +37733,150 @@
m_NAtagSCTurnFightReportSign=tagSCTurnFightReportSign()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightReportSign.Cmd,m_NAtagSCTurnFightReportSign.SubCmd))] = m_NAtagSCTurnFightReportSign
#------------------------------------------------------
# B4 31 战斗战报结果 #tagSCTurnFightRet
class  tagSCTurnFightRet(Structure):
    Head = tagHead()
    MapID = 0    #(DWORD MapID)// 自定义地图ID,可用于绑定战斗地图场景功能(如主线boss、爬塔、竞技场等)
    FuncLineID = 0    #(DWORD FuncLineID)// MapID对应的扩展值,如具体某个关卡等
    TagType = 0    #(BYTE TagType)// 目标类型,0-NPC阵容,1-玩家
    TagID = 0    #(DWORD TagID)// 目标类型对应的ID,如玩家ID
    ValueCount = 0    #(BYTE ValueCount)
    ValueList = list()    #(vector<DWORD> ValueList)// 附加值列表,可选,具体含义由MapID决定
    IsWin = 0    #(BYTE IsWin)//是否获胜
    AwardLen = 0    #(WORD AwardLen)
    AwardMsg = ""    #(String AwardMsg)//功能结算奖励信息,不含战斗相关统计信息
    BatLen = 0    #(WORD BatLen)
    BatStatMsg = ""    #(String BatStatMsg)//战斗相关统计信息
    PathDate = ""    #(char PathDate[8])//战报路径日期, yyyyMMdd, 为空时代表公共类的战报,不为空时为玩家个人类战报
    GUID = ""    #(char GUID[40])//战报guid,前端根据功能MapID判断是否跨服功能,是的话从跨服服务器下载战报,否的话从本服下载
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x31
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FuncLineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TagType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ValueCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.ValueList.append(value)
        self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AwardMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.AwardLen)
        self.BatLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BatStatMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.BatLen)
        self.PathDate,_pos = CommFunc.ReadString(_lpData, _pos,8)
        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x31
        self.MapID = 0
        self.FuncLineID = 0
        self.TagType = 0
        self.TagID = 0
        self.ValueCount = 0
        self.ValueList = list()
        self.IsWin = 0
        self.AwardLen = 0
        self.AwardMsg = ""
        self.BatLen = 0
        self.BatStatMsg = ""
        self.PathDate = ""
        self.GUID = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 1
        length += 4
        length += 1
        length += 4 * self.ValueCount
        length += 1
        length += 2
        length += len(self.AwardMsg)
        length += 2
        length += len(self.BatStatMsg)
        length += 8
        length += 40
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteDWORD(data, self.FuncLineID)
        data = CommFunc.WriteBYTE(data, self.TagType)
        data = CommFunc.WriteDWORD(data, self.TagID)
        data = CommFunc.WriteBYTE(data, self.ValueCount)
        for i in range(self.ValueCount):
            data = CommFunc.WriteDWORD(data, self.ValueList[i])
        data = CommFunc.WriteBYTE(data, self.IsWin)
        data = CommFunc.WriteWORD(data, self.AwardLen)
        data = CommFunc.WriteString(data, self.AwardLen, self.AwardMsg)
        data = CommFunc.WriteWORD(data, self.BatLen)
        data = CommFunc.WriteString(data, self.BatLen, self.BatStatMsg)
        data = CommFunc.WriteString(data, 8, self.PathDate)
        data = CommFunc.WriteString(data, 40, self.GUID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                MapID:%d,
                                FuncLineID:%d,
                                TagType:%d,
                                TagID:%d,
                                ValueCount:%d,
                                ValueList:%s,
                                IsWin:%d,
                                AwardLen:%d,
                                AwardMsg:%s,
                                BatLen:%d,
                                BatStatMsg:%s,
                                PathDate:%s,
                                GUID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.MapID,
                                self.FuncLineID,
                                self.TagType,
                                self.TagID,
                                self.ValueCount,
                                "...",
                                self.IsWin,
                                self.AwardLen,
                                self.AwardMsg,
                                self.BatLen,
                                self.BatStatMsg,
                                self.PathDate,
                                self.GUID
                                )
        return DumpString
m_NAtagSCTurnFightRet=tagSCTurnFightRet()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightRet.Head.Cmd,m_NAtagSCTurnFightRet.Head.SubCmd))] = m_NAtagSCTurnFightRet
#------------------------------------------------------
@@ -49290,6 +47837,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):