xdh
2019-05-08 12839a8310f6f42980c84ddd1d2e808022a5e6f1
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -12389,6 +12389,7 @@
    _fields_ = [
                  ("ItemID", c_int),    #果实物品ID
                  ("EatCnt", c_ushort),    #已使用个数
                  ("AddItemCnt", c_int),    #增幅丹使用个数
                  ]
    def __init__(self):
@@ -12403,6 +12404,7 @@
    def Clear(self):
        self.ItemID = 0
        self.EatCnt = 0
        self.AddItemCnt = 0
        return
    def GetLength(self):
@@ -12414,11 +12416,13 @@
    def OutputString(self):
        DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
                                ItemID:%d,
                                EatCnt:%d
                                EatCnt:%d,
                                AddItemCnt:%d
                                '''\
                                %(
                                self.ItemID,
                                self.EatCnt
                                self.EatCnt,
                                self.AddItemCnt
                                )
        return DumpString
@@ -15528,6 +15532,114 @@
#------------------------------------------------------
# A3 25 NPC已攻击次数信息 #tagMCNPCAttackCountInfo
class  tagMCNPCAttackCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),
                  ("AttackCount", 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.NPCID = 0
        self.AttackCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCNPCAttackCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 25 NPC已攻击次数信息 //tagMCNPCAttackCountInfo:
                                NPCID:%d,
                                AttackCount:%d
                                '''\
                                %(
                                self.NPCID,
                                self.AttackCount
                                )
        return DumpString
class  tagMCNPCAttackCountInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    NPCAttackCountList = list()    #(vector<tagMCNPCAttackCount> NPCAttackCountList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x25
        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):
            temNPCAttackCountList = tagMCNPCAttackCount()
            _pos = temNPCAttackCountList.ReadData(_lpData, _pos)
            self.NPCAttackCountList.append(temNPCAttackCountList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x25
        self.Count = 0
        self.NPCAttackCountList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.NPCAttackCountList[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.NPCAttackCountList[i].GetLength(), self.NPCAttackCountList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                NPCAttackCountList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCNPCAttackCountInfo=tagMCNPCAttackCountInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCAttackCountInfo.Head.Cmd,m_NAtagMCNPCAttackCountInfo.Head.SubCmd))] = m_NAtagMCNPCAttackCountInfo
#------------------------------------------------------
# A3 26 NPCID已采集次数信息 #tagMCNPCIDCollectionCntInfo
class  tagMCNPCIDCollectionCnt(Structure):
@@ -16160,20 +16272,15 @@
#------------------------------------------------------
# A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg
class  tagMCPlayerStoveMsg(Structure):
class  tagMCPlayerStoveInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("StoveLV", c_ubyte),    # 炼丹炉等级
                  ("StoveExp", c_int),    # 炼丹炉经验
                  ("ItemID", c_int),    # 合成物品id
                  ("AlchemyID", c_int),    # 丹 ID
                  ("StartTime", c_int),    # 开始炼的时间
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xBF
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -16182,39 +16289,120 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0xBF
        self.StoveLV = 0
        self.StoveExp = 0
        self.ItemID = 0
        self.AlchemyID = 0
        self.StartTime = 0
        return
    def GetLength(self):
        return sizeof(tagMCPlayerStoveMsg)
        return sizeof(tagMCPlayerStoveInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
                                Cmd:%s,
                                SubCmd:%s,
                                StoveLV:%d,
                                StoveExp:%d,
                                ItemID:%d
                                AlchemyID:%d,
                                StartTime:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AlchemyID,
                                self.StartTime
                                )
        return DumpString
class  tagMCPlayerStoveMsg(Structure):
    Head = tagHead()
    StoveLV = 0    #(BYTE StoveLV)// 炼丹炉等级
    StoveExp = 0    #(DWORD StoveExp)// 炼丹炉经验
    ItemID = 0    #(DWORD ItemID)// 合成物品id
    ItemCnt = 0    #(BYTE ItemCnt)// 丹药数量
    StoveCnt = 0    #(WORD StoveCnt)// 丹药数量
    InfoList = list()    #(vector<tagMCPlayerStoveInfo> InfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xBF
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.StoveCnt):
            temInfoList = tagMCPlayerStoveInfo()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xBF
        self.StoveLV = 0
        self.StoveExp = 0
        self.ItemID = 0
        self.ItemCnt = 0
        self.StoveCnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4
        length += 4
        length += 1
        length += 2
        for i in range(self.StoveCnt):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.StoveLV)
        data = CommFunc.WriteDWORD(data, self.StoveExp)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteBYTE(data, self.ItemCnt)
        data = CommFunc.WriteWORD(data, self.StoveCnt)
        for i in range(self.StoveCnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StoveLV:%d,
                                StoveExp:%d,
                                ItemID:%d,
                                ItemCnt:%d,
                                StoveCnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StoveLV,
                                self.StoveExp,
                                self.ItemID
                                self.ItemID,
                                self.ItemCnt,
                                self.StoveCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Head.Cmd,m_NAtagMCPlayerStoveMsg.Head.SubCmd))] = m_NAtagMCPlayerStoveMsg
#------------------------------------------------------
@@ -16282,6 +16470,8 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BeginTime", c_int),    #开始计时时间
                  ("BuffTime", c_int),    #buff剩余时间
                  ("BuffAddRate", c_int),    #buff加成万分率
                  ("CurExp", c_int),    #当前总经验
                  ("CurExpPoint", c_int),    #当前总经验点
                  ]
@@ -16301,6 +16491,8 @@
        self.Cmd = 0xA3
        self.SubCmd = 0x27
        self.BeginTime = 0
        self.BuffTime = 0
        self.BuffAddRate = 0
        self.CurExp = 0
        self.CurExpPoint = 0
        return
@@ -16316,6 +16508,8 @@
                                Cmd:%s,
                                SubCmd:%s,
                                BeginTime:%d,
                                BuffTime:%d,
                                BuffAddRate:%d,
                                CurExp:%d,
                                CurExpPoint:%d
                                '''\
@@ -16323,6 +16517,8 @@
                                self.Cmd,
                                self.SubCmd,
                                self.BeginTime,
                                self.BuffTime,
                                self.BuffAddRate,
                                self.CurExp,
                                self.CurExpPoint
                                )
@@ -16581,6 +16777,178 @@
m_NAtagMCSingleGoldGift=tagMCSingleGoldGift()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSingleGoldGift.Cmd,m_NAtagMCSingleGoldGift.SubCmd))] = m_NAtagMCSingleGoldGift
#------------------------------------------------------
# A3 09 技能五行专精信息 #tagMCSkillElementInfo
class  tagMCSkillElementActiveData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("SkillID", c_int),    # 技能ID
                  ("ActiveLV", 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.SkillID = 0
        self.ActiveLV = 0
        return
    def GetLength(self):
        return sizeof(tagMCSkillElementActiveData)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo:
                                SkillID:%d,
                                ActiveLV:%d
                                '''\
                                %(
                                self.SkillID,
                                self.ActiveLV
                                )
        return DumpString
class  tagMCSkillElementData(Structure):
    MainSkillID = 0    #(DWORD MainSkillID)// 主技能ID
    ElementSkillID = 0    #(DWORD ElementSkillID)// 选择的专精技能ID
    SkillCnt = 0    #(BYTE SkillCnt)// 数量
    ActiveSkill = list()    #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SkillCnt):
            temActiveSkill = tagMCSkillElementActiveData()
            _pos = temActiveSkill.ReadData(_lpData, _pos)
            self.ActiveSkill.append(temActiveSkill)
        return _pos
    def Clear(self):
        self.MainSkillID = 0
        self.ElementSkillID = 0
        self.SkillCnt = 0
        self.ActiveSkill = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 1
        for i in range(self.SkillCnt):
            length += self.ActiveSkill[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.MainSkillID)
        data = CommFunc.WriteDWORD(data, self.ElementSkillID)
        data = CommFunc.WriteBYTE(data, self.SkillCnt)
        for i in range(self.SkillCnt):
            data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                MainSkillID:%d,
                                ElementSkillID:%d,
                                SkillCnt:%d,
                                ActiveSkill:%s
                                '''\
                                %(
                                self.MainSkillID,
                                self.ElementSkillID,
                                self.SkillCnt,
                                "..."
                                )
        return DumpString
class  tagMCSkillElementInfo(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)// 数量
    InfoList = list()    #(vector<tagMCSkillElementData> InfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x09
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Cnt):
            temInfoList = tagMCSkillElementData()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x09
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCSkillElementInfo=tagMCSkillElementInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkillElementInfo.Head.Cmd,m_NAtagMCSkillElementInfo.Head.SubCmd))] = m_NAtagMCSkillElementInfo
#------------------------------------------------------
@@ -18879,6 +19247,125 @@
#------------------------------------------------------
# A7 18 采集奖励物品通知 #tagMCCollectAwardItemInfo
class  tagMCCollectAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("Count", c_ubyte),
                  ("IsAuctionItem", c_ubyte),    #是否拍品
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.Count = 0
        self.IsAuctionItem = 0
        return
    def GetLength(self):
        return sizeof(tagMCCollectAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 18 采集奖励物品通知 //tagMCCollectAwardItemInfo:
                                ItemID:%d,
                                Count:%d,
                                IsAuctionItem:%d
                                '''\
                                %(
                                self.ItemID,
                                self.Count,
                                self.IsAuctionItem
                                )
        return DumpString
class  tagMCCollectAwardItemInfo(Structure):
    Head = tagHead()
    CollectNPCID = 0    #(DWORD CollectNPCID)//采集的NPCID
    Count = 0    #(BYTE Count)
    AwardItemList = list()    #(vector<tagMCCollectAwardItem> AwardItemList)//奖励物品信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x18
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.CollectNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAwardItemList = tagMCCollectAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x18
        self.CollectNPCID = 0
        self.Count = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.CollectNPCID)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                CollectNPCID:%d,
                                Count:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.CollectNPCID,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
#------------------------------------------------------
# A7 13 动态障碍物状态 #tagMCDynamicBarrierState
class  tagMCDynamicBarrier(Structure):
@@ -19916,6 +20403,84 @@
m_NAtagMCNPCShow=tagMCNPCShow()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCShow.Cmd,m_NAtagMCNPCShow.SubCmd))] = m_NAtagMCNPCShow
#------------------------------------------------------
# A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
class  tagSCPlayerEquipCacheResult(Structure):
    Head = tagHead()
    PlayerID = 0    #(DWORD PlayerID)//玩家ID
    EquipClassLV = 0    #(BYTE EquipClassLV)
    ItemDataSize = 0    #(WORD ItemDataSize)
    ItemData = ""    #(String ItemData)//物品记录
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x19
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EquipClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemDataSize,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x19
        self.PlayerID = 0
        self.EquipClassLV = 0
        self.ItemDataSize = 0
        self.ItemData = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 2
        length += len(self.ItemData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.EquipClassLV)
        data = CommFunc.WriteWORD(data, self.ItemDataSize)
        data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PlayerID:%d,
                                EquipClassLV:%d,
                                ItemDataSize:%d,
                                ItemData:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PlayerID,
                                self.EquipClassLV,
                                self.ItemDataSize,
                                self.ItemData
                                )
        return DumpString
m_NAtagSCPlayerEquipCacheResult=tagSCPlayerEquipCacheResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCPlayerEquipCacheResult.Head.Cmd,m_NAtagSCPlayerEquipCacheResult.Head.SubCmd))] = m_NAtagSCPlayerEquipCacheResult
#------------------------------------------------------
@@ -27625,6 +28190,54 @@
#------------------------------------------------------
#B1 08 开始印记流失时间 #tagMCYinjiStartTime
class  tagMCYinjiStartTime(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        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 = 0xB1
        self.SubCmd = 0x08
        return
    def GetLength(self):
        return sizeof(tagMCYinjiStartTime)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
#------------------------------------------------------
# B2 08 获得仙缘币信息 #tagMCAddXianyuanCoinMsg
class  tagMCAddXianyuanCoinMsg(Structure):
@@ -28010,6 +28623,118 @@
#------------------------------------------------------
# B2 15 副本买buff信息通知 #tagMCFBBuyBuffInfo
class  tagMCFBBuyBuffTime(Structure):
    _pack_ = 1
    _fields_ = [
                  ("MapID", c_int),
                  ("MoneyCnt", c_ushort),
                  ("BuyTime", c_int),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.MapID = 0
        self.MoneyCnt = 0
        self.BuyTime = 0
        return
    def GetLength(self):
        return sizeof(tagMCFBBuyBuffTime)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 15 副本买buff信息通知 //tagMCFBBuyBuffInfo:
                                MapID:%d,
                                MoneyCnt:%d,
                                BuyTime:%d
                                '''\
                                %(
                                self.MapID,
                                self.MoneyCnt,
                                self.BuyTime
                                )
        return DumpString
class  tagMCFBBuyBuffInfo(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)
    InfoList = list()    #(vector<tagMCFBBuyBuffTime> InfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x15
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Cnt):
            temInfoList = tagMCFBBuyBuffTime()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x15
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCFBBuyBuffInfo=tagMCFBBuyBuffInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBBuyBuffInfo.Head.Cmd,m_NAtagMCFBBuyBuffInfo.Head.SubCmd))] = m_NAtagMCFBBuyBuffInfo
#------------------------------------------------------
# B2 09 副本次数恢复剩余时间 #tagMCFBCntRegainRemainTime
class  tagMCFBCntRegain(Structure):