hxp
2019-09-20 67bcc2ab06912fc3d9cf31ceae533da76e50d5ae
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -829,7 +829,7 @@
    Head = tagHead()
    Type = 0    #(BYTE Type)//类型
    Count = 0    #(WORD Count)//数量
    UniversalGameRec = list()    #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
    UniversalGameRec = list()    #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
    data = None
    def __init__(self):
@@ -1133,7 +1133,7 @@
    FamilyID = 0    #(DWORD FamilyID)//家族ID
    ActionType = 0    #(BYTE ActionType)//类型
    Count = 0    #(WORD Count)//数量
    FamilyActionList = list()    #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
    FamilyActionList = list()    #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
    data = None
    def __init__(self):
@@ -2121,6 +2121,58 @@
#------------------------------------------------------
# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes
class  tagGCServerCreatFamilyTimes(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Times", c_int),    #建盟次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA4
        self.SubCmd = 0x0D
        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 = 0xA4
        self.SubCmd = 0x0D
        self.Times = 0
        return
    def GetLength(self):
        return sizeof(tagGCServerCreatFamilyTimes)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes:
                                Cmd:%s,
                                SubCmd:%s,
                                Times:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Times
                                )
        return DumpString
m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes
#------------------------------------------------------
#A4 01  查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo
class  tagtMemberInfo(Structure):
@@ -2981,8 +3033,8 @@
    IsAlive = 0    #(BYTE IsAlive)// 是否存活
    RecordLen = 0    #(WORD RecordLen)// 长度
    KillRecord = ""    #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
    RefreshSecond = 0    #(DWORD RefreshSecond)// 刷新倒计时, 秒
    RefreshCD = 0    #(DWORD RefreshCD)// 刷新总CD时, 秒
    RefreshSecond = 0    #(DWORD RefreshSecond)// 刷新倒计时, 秒
    RefreshCD = 0    #(DWORD RefreshCD)// 刷新总CD时, 秒
    data = None
    def __init__(self):
@@ -3376,8 +3428,8 @@
class  tagGCNotifyEquipClassEquip(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("Star", c_ubyte),
                  ("ItemID", c_int),
                  ("Star", c_ubyte),
                  ]
    def __init__(self):
@@ -3635,7 +3687,7 @@
    OrderIndex = 0    #(DWORD OrderIndex)//名次索引,0代表第一名
    ID = 0    #(DWORD ID)
    ID2 = 0    #(DWORD ID2)
    Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字
    Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字
    Name2 = ""    #(char Name2[33])//名字2
    Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
    Value1 = 0    #(DWORD Value1)//排序依赖的值,比如,等级
@@ -3947,7 +3999,7 @@
    Count = 0    #(DWORD Count)//数量
    IsBind = 0    #(BYTE IsBind)//是否绑定
    UserDataLen = 0    #(DWORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
@@ -4188,7 +4240,7 @@
    Name = ""    #(char Name[33])
    LV = 0    #(DWORD LV)//等级
    Job = 0    #(BYTE Job)
    RealmLV = 0    #(WORD RealmLV)//境界
    RealmLV = 0    #(WORD RealmLV)//境界
    data = None
    def __init__(self):
@@ -4774,6 +4826,58 @@
m_NAtagGCFairyCeremonyInfo=tagGCFairyCeremonyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFairyCeremonyInfo.Head.Cmd,m_NAtagGCFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCFairyCeremonyInfo
#------------------------------------------------------
# AC 01 仙盟联赛信息通知 #tagGCFamilyWarInfo
class  tagGCFamilyWarInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("WorldLV", c_ushort),    # 当前进行中的联赛世界等级
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAC
        self.SubCmd = 0x01
        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 = 0x01
        self.WorldLV = 0
        return
    def GetLength(self):
        return sizeof(tagGCFamilyWarInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AC 01 仙盟联赛信息通知 //tagGCFamilyWarInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                WorldLV:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.WorldLV
                                )
        return DumpString
m_NAtagGCFamilyWarInfo=tagGCFamilyWarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyWarInfo.Cmd,m_NAtagGCFamilyWarInfo.SubCmd))] = m_NAtagGCFamilyWarInfo
#------------------------------------------------------
@@ -5629,7 +5733,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("StartTime", c_int),
                  ("StartTime", c_int),
                  ]
    def __init__(self):
@@ -5738,7 +5842,7 @@
class  tagFamilyArrestOverStateInfo(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    ArrestOverStateInfo = list()    #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
    ArrestOverStateInfo = list()    #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
    data = None
    def __init__(self):
@@ -5888,7 +5992,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GroupType", c_ubyte),    # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
                  ("PlayerID", c_int),
                  ("PlayerID", c_int),
                  ("SortValue", c_int),    #最近联系人和仇人按时间排序
                  ]
@@ -6054,7 +6158,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GroupType", c_ubyte),    # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
                  ("PlayerID", c_int),
                  ("PlayerID", c_int),
                  ]
    def __init__(self):
@@ -6249,8 +6353,8 @@
class  tagGCGroupPlayer(Structure):
    _pack_ = 1
    _fields_ = [
                  ("PlayerID", c_int),
                  ("SortValue", c_int),
                  ("PlayerID", c_int),
                  ("SortValue", c_int),
                  ]
    def __init__(self):
@@ -6430,7 +6534,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),
                  ("PlayerID", c_int),
                  ("OnlineType", c_ubyte),    #0不在线 1在线 2脱机在线
                  ]
@@ -6486,9 +6590,9 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),
                  ("RefreshType", c_ubyte),    #参考CDBPlayerRefresh__
                  ("Value", c_int),
                  ("PlayerID", c_int),
                  ("RefreshType", c_ubyte),    #参考CDBPlayerRefresh__
                  ("Value", c_int),
                  ]
    def __init__(self):
@@ -6543,7 +6647,7 @@
class  tagGCVoiceChat(Structure):
    Head = tagHead()
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
    SrcNameLen = 0    #(BYTE SrcNameLen)
    SrcName = ""    #(String SrcName)//size = SrcNameLen
    PlayerID = 0    #(DWORD PlayerID)
@@ -6666,6 +6770,162 @@
m_NAtagGCVoiceChat=tagGCVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
#------------------------------------------------------
# B3 11 聊天缓存通知 #tagGCTalkCache
class  tagGCTalkCacheInfo(Structure):
    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟
    NameLen = 0    #(BYTE NameLen)
    Name = ""    #(String Name)//size = SrcNameLen
    PlayerID = 0    #(DWORD PlayerID)
    Time = 0    #(DWORD Time)
    Len = 0    #(WORD Len)
    Content = ""    #(String Content)//size = Len
    Extras = ""    #(char Extras[256])//附加值列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
        self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
        return _pos
    def Clear(self):
        self.ChannelType = 0
        self.NameLen = 0
        self.Name = ""
        self.PlayerID = 0
        self.Time = 0
        self.Len = 0
        self.Content = ""
        self.Extras = ""
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += len(self.Name)
        length += 4
        length += 4
        length += 2
        length += len(self.Content)
        length += 256
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ChannelType)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteDWORD(data, self.Time)
        data = CommFunc.WriteWORD(data, self.Len)
        data = CommFunc.WriteString(data, self.Len, self.Content)
        data = CommFunc.WriteString(data, 256, self.Extras)
        return data
    def OutputString(self):
        DumpString = '''
                                ChannelType:%d,
                                NameLen:%d,
                                Name:%s,
                                PlayerID:%d,
                                Time:%d,
                                Len:%d,
                                Content:%s,
                                Extras:%s
                                '''\
                                %(
                                self.ChannelType,
                                self.NameLen,
                                self.Name,
                                self.PlayerID,
                                self.Time,
                                self.Len,
                                self.Content,
                                self.Extras
                                )
        return DumpString
class  tagGCTalkCache(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    InfoList = list()    #(vector<tagGCTalkCacheInfo> InfoList)//size = Count
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x11
        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):
            temInfoList = tagGCTalkCacheInfo()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x11
        self.Count = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.InfoList[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.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCTalkCache=tagGCTalkCache()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache
#------------------------------------------------------
@@ -8059,7 +8319,7 @@
    ItemGUID = ""    #(char ItemGUID[40])
    AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
    AddTime = ""    #(char AddTime[19])//上架时间
    BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
    BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
    BidderPrice = 0    #(DWORD BidderPrice)//最高竞拍价格
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    data = None
@@ -9003,7 +9263,7 @@
class  tagGCTeamMemPrepareState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("PlayerID", c_int),
                  ("PlayerID", c_int),
                  ("PrepareState", c_ubyte),    # 状态,0-未准备,1-已准备,2-拒绝
                  ]
@@ -9469,9 +9729,9 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),
                  ("PlayerID", c_int),
                  ("RefreshType", c_ubyte),    #刷新类型,同0418属性类型
                  ("Value", c_int),
                  ("Value", c_int),
                  ]
    def __init__(self):
@@ -9741,8 +10001,8 @@
class  tagGCCrossRealmPKBillboardInfo(Structure):
    Head = tagHead()
    ZoneID = 0    #(BYTE ZoneID)// 赛区ID
    SeasonID = 0    #(BYTE SeasonID)// 赛季ID
    ZoneID = 0    #(BYTE ZoneID)// 赛区ID
    SeasonID = 0    #(BYTE SeasonID)// 赛季ID
    Count = 0    #(WORD Count)
    PKBillboardList = list()    #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
    data = None
@@ -10425,6 +10685,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsRobot", c_ubyte),    # 是否匹配机器人
                  ]
    def __init__(self):
@@ -10441,6 +10702,7 @@
    def Clear(self):
        self.Cmd = 0xC0
        self.SubCmd = 0x02
        self.IsRobot = 0
        return
    def GetLength(self):
@@ -10452,11 +10714,13 @@
    def OutputString(self):
        DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch:
                                Cmd:%s,
                                SubCmd:%s
                                SubCmd:%s,
                                IsRobot:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                self.SubCmd,
                                self.IsRobot
                                )
        return DumpString
@@ -10519,7 +10783,7 @@
class  tagMCCoinToGoldCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RecordID", c_ubyte),
                  ("RecordID", c_ubyte),
                  ("TodayPayCount", c_ushort),    # 今日已购买次数
                  ("TotalPayCount", c_int),    # 累计总购买次数
                  ]
@@ -10755,7 +11019,7 @@
    BackpackLV = 0    #(BYTE BackpackLV)//背包等级
    WarehouseLV = 0    #(BYTE WarehouseLV)//仓库等级
    TeamID = 0    #(DWORD TeamID)//队伍ID
    UseGoldType = 0    #(BYTE UseGoldType)//默认用金子/金票      类型为MoneyType
    UseGoldType = 0    #(BYTE UseGoldType)//默认用金子/金票        类型为MoneyType
    UseSilverType = 0    #(BYTE UseSilverType)//默认用的银子/银票
    AttackMode = 0    #(BYTE AttackMode)//攻击模式
    LastWeekOnlineTime = 0    #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -11748,7 +12012,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_ushort),
                  ("MapID", c_ushort),
                  ("FuncLineID", c_ushort),    #功能线路ID
                  ]
@@ -11804,7 +12068,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),
                  ("MapID", c_int),
                  ("FuncLineID", c_ushort),    #功能线路ID
                  ]
@@ -11912,7 +12176,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Mode", c_ubyte),
                  ("Mode", c_ubyte),
                  ]
    def __init__(self):
@@ -12209,7 +12473,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LockState", c_ubyte),
                  ("LockState", c_ubyte),
                  ]
    def __init__(self):
@@ -12746,6 +13010,7 @@
                  ("BossType", c_ubyte),    #编号类型0-世界boss 1-boss之家
                  ("KillCnt", c_int),    #击杀次数
                  ("ItemAddCnt", c_int),    #物品增加次数
                  ("BuyCnt", c_ubyte),    #购买次数
                  ]
    def __init__(self):
@@ -12761,6 +13026,7 @@
        self.BossType = 0
        self.KillCnt = 0
        self.ItemAddCnt = 0
        self.BuyCnt = 0
        return
    def GetLength(self):
@@ -12773,12 +13039,14 @@
        DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt:
                                BossType:%d,
                                KillCnt:%d,
                                ItemAddCnt:%d
                                ItemAddCnt:%d,
                                BuyCnt:%d
                                '''\
                                %(
                                self.BossType,
                                self.KillCnt,
                                self.ItemAddCnt
                                self.ItemAddCnt,
                                self.BuyCnt
                                )
        return DumpString
@@ -13577,7 +13845,7 @@
    Seting = 0    #(DWORD Seting)// 操作数据记录
    DecomposeCnt = 0    #(BYTE DecomposeCnt)// 分解件数进度
    GetItemLen = 0    #(WORD GetItemLen)
    GetItemData = ""    #(String GetItemData)//  获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
    GetItemData = ""    #(String GetItemData)//  获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
    data = None
    def __init__(self):
@@ -13665,8 +13933,8 @@
class  tagMCEquipPartStar(Structure):
    _pack_ = 1
    _fields_ = [
                  ("EquipPackIndex", c_ushort),
                  ("Star", c_ubyte),
                  ("EquipPackIndex", c_ushort),
                  ("Star", c_ubyte),
                  ]
    def __init__(self):
@@ -13810,7 +14078,7 @@
class  tagMCEquipPartXLAttr(Structure):
    EquipPlace = 0    #(BYTE EquipPlace)// 装备位
    EquipPlace = 0    #(BYTE EquipPlace)// 装备位
    XLAttrLV = 0    #(BYTE XLAttrLV)// 洗练等级
    XLAttrCnt = 0    #(BYTE XLAttrCnt)// 属性条数
    XLAttrList = list()    #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -13945,7 +14213,7 @@
class  tagMCFairyAdventuresData(Structure):
    _pack_ = 1
    _fields_ = [
                  ("EventID", c_ubyte),
                  ("EventID", c_ubyte),
                  ("Gear", c_ubyte),    #第几档
                  ("Condition", c_int),    #条件
                  ]
@@ -14346,7 +14614,7 @@
class  tagMCFBEncourageInfo(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)//
    Cnt = 0    #(BYTE Cnt)//
    InfoList = list()    #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
    data = None
@@ -15136,7 +15404,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Cnt", c_int),
                  ("Cnt", c_int),
                  ]
    def __init__(self):
@@ -15181,14 +15449,186 @@
#------------------------------------------------------
# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
class  tagMCHistoryReChargeAwardRecord(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("AwardGetRecord", c_int),    # 按二进制位标示领取记录 配置奖励ID代表第几位
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x28
        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 = 0x28
        self.AwardGetRecord = 0
        return
    def GetLength(self):
        return sizeof(tagMCHistoryReChargeAwardRecord)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 28 历史累积充值奖励领取记录 //tagMCHistoryReChargeAwardRecord:
                                Cmd:%s,
                                SubCmd:%s,
                                AwardGetRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AwardGetRecord
                                )
        return DumpString
m_NAtagMCHistoryReChargeAwardRecord=tagMCHistoryReChargeAwardRecord()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHistoryReChargeAwardRecord.Cmd,m_NAtagMCHistoryReChargeAwardRecord.SubCmd))] = m_NAtagMCHistoryReChargeAwardRecord
#------------------------------------------------------
# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
class  tagMCHorsePetSkinInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Type", c_ubyte),    # 1-坐骑 2-灵宠
                  ("ID", c_int),    # 对应坐骑表灵宠表ID
                  ("Exp", c_int),    #经验
                  ("SkinLV", c_ubyte),    #觉醒等级
                  ("SkinIndex", 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.Type = 0
        self.ID = 0
        self.Exp = 0
        self.SkinLV = 0
        self.SkinIndex = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorsePetSkinInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
                                Type:%d,
                                ID:%d,
                                Exp:%d,
                                SkinLV:%d,
                                SkinIndex:%d
                                '''\
                                %(
                                self.Type,
                                self.ID,
                                self.Exp,
                                self.SkinLV,
                                self.SkinIndex
                                )
        return DumpString
class  tagMCHorsePetSkinData(Structure):
    Head = tagHead()
    Num = 0    #(BYTE Num)//个数
    InfoList = list()    #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Num):
            temInfoList = tagMCHorsePetSkinInfo()
            _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 = 0x12
        self.Num = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Num):
            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.Num)
        for i in range(self.Num):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Num:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Num,
                                "..."
                                )
        return DumpString
m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
#------------------------------------------------------
# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
class  tagMCMagicWeaponInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("MWID", c_int),
                  ("LV", c_ubyte),
                  ("Exp", c_int),
                  ("MWID", c_int),
                  ("LV", c_ubyte),
                  ("Exp", c_int),
                  ("FBPassLV", c_ubyte),    #副本关卡
                  ("IsWear", c_ubyte),    #是否佩戴(仅适用王者法宝)
                  ]
@@ -15426,11 +15866,11 @@
class  tagMCEquipPartPlusLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("PackType", c_ubyte),
                  ("EquipIndex", c_ubyte),
                  ("EquipPartStarLV", c_ushort),
                  ("Proficiency", c_int),
                  ("EvolveLV", c_ubyte),
                  ("PackType", c_ubyte),
                  ("EquipIndex", c_ubyte),
                  ("EquipPartStarLV", c_ushort),
                  ("Proficiency", c_int),
                  ("EvolveLV", c_ubyte),
                  ]
    def __init__(self):
@@ -15725,7 +16165,7 @@
class  tagMCNPCAttackCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),
                  ("NPCID", c_int),
                  ("AttackCount", c_ubyte),    #已攻击次数
                  ]
@@ -16017,7 +16457,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Record", c_ubyte),    #0-未领取 1-已领取
                  ("Record", c_ubyte),    #0-未领取 1-已领取
                  ]
    def __init__(self):
@@ -16270,8 +16710,8 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PrizeItem", c_int),
                  ("ItemCount", c_ubyte),
                  ("PrizeItem", c_int),
                  ("ItemCount", c_ubyte),
                  ]
    def __init__(self):
@@ -16317,7 +16757,7 @@
class  tagMCPlayerOnlinePrizeInfo(Structure):
    Head = tagHead()
    RemaindTime = 0    #(DWORD RemaindTime)//产生奖励剩余时间
    HasPrize = 0    #(BYTE HasPrize)//是否可以领取
    HasPrize = 0    #(BYTE HasPrize)//是否可以领取
    PrizeType = 0    #(BYTE PrizeType)//在线奖励类型
    PrizeCnt = 0    #(BYTE PrizeCnt)//在线奖励类型
    PrizeInfo = list()    #(vector<tagMCOnlinePrizeItem> PrizeInfo)//在线奖励类型
@@ -16464,7 +16904,8 @@
    _pack_ = 1
    _fields_ = [
                  ("AlchemyID", c_int),    # 丹 ID
                  ("StartTime", c_int),    # 开始炼的时间
                  ("StartTime", c_int),    # 开始炼的时间
                  ("AlchemyTimes", c_ushort),    # 炼的次数
                  ]
    def __init__(self):
@@ -16479,6 +16920,7 @@
    def Clear(self):
        self.AlchemyID = 0
        self.StartTime = 0
        self.AlchemyTimes = 0
        return
    def GetLength(self):
@@ -16490,11 +16932,13 @@
    def OutputString(self):
        DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
                                AlchemyID:%d,
                                StartTime:%d
                                StartTime:%d,
                                AlchemyTimes:%d
                                '''\
                                %(
                                self.AlchemyID,
                                self.StartTime
                                self.StartTime,
                                self.AlchemyTimes
                                )
        return DumpString
@@ -16728,6 +17172,7 @@
                  ("ExtraCnt", c_ubyte),    # VIP额外次数
                  ("ExtraData", c_ubyte),    # 额外参数1
                  ("ExtraData2", c_ubyte),    # 额外参数2
                  ("HaveRecover", c_ubyte),    # 已找回 1-全部已找回 2-非VIP已找回
                  ]
    def __init__(self):
@@ -16745,6 +17190,7 @@
        self.ExtraCnt = 0
        self.ExtraData = 0
        self.ExtraData2 = 0
        self.HaveRecover = 0
        return
    def GetLength(self):
@@ -16759,14 +17205,16 @@
                                RecoverCnt:%d,
                                ExtraCnt:%d,
                                ExtraData:%d,
                                ExtraData2:%d
                                ExtraData2:%d,
                                HaveRecover:%d
                                '''\
                                %(
                                self.Index,
                                self.RecoverCnt,
                                self.ExtraCnt,
                                self.ExtraData,
                                self.ExtraData2
                                self.ExtraData2,
                                self.HaveRecover
                                )
        return DumpString
@@ -17143,7 +17591,7 @@
# A3 BC 通知装备位孔位宝石ID #tagMCStoneInfo
class  tagMCStoneMsg(Structure):
    EquipPlace = 0    #(BYTE EquipPlace)// 装备位
    EquipPlace = 0    #(BYTE EquipPlace)// 装备位
    MaxStoneCount = 0    #(BYTE MaxStoneCount)// 最大孔数
    StoneInfo = list()    #(vector<DWORD> StoneInfo)// 孔内宝石信息
    StoneBind = list()    #(vector<BYTE> StoneBind)// 孔内宝石是否绑定
@@ -18131,8 +18579,8 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PassLV", c_int),
                  ("YesterDayPassLV", c_int),
                  ("PassLV", c_int),
                  ("YesterDayPassLV", c_int),
                  ]
    def __init__(self):
@@ -18539,6 +18987,58 @@
m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
#------------------------------------------------------
# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
class  tagMCFamilyActivityExchangeResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Point", c_int),    # 活跃令
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x02
        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 = 0xA5
        self.SubCmd = 0x02
        self.Point = 0
        return
    def GetLength(self):
        return sizeof(tagMCFamilyActivityExchangeResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
                                Cmd:%s,
                                SubCmd:%s,
                                Point:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Point
                                )
        return DumpString
m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
#------------------------------------------------------
@@ -19114,7 +19614,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Exp", c_int),    # 当前VIP等级经验
                  ("VIPLV", c_int),    #vip等级
                  ("VIPLV", c_int),    #vip等级
                  ]
    def __init__(self):
@@ -19440,8 +19940,8 @@
class  tagMCCollectAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("Count", c_ubyte),
                  ("ItemID", c_int),
                  ("Count", c_ubyte),
                  ("IsAuctionItem", c_ubyte),    #是否拍品
                  ]
@@ -19559,11 +20059,11 @@
class  tagMCDynamicBarrier(Structure):
    _pack_ = 1
    _fields_ = [
                  ("APosX", c_ushort),
                  ("APosY", c_ushort),
                  ("BPosX", c_ushort),
                  ("BPosY", c_ushort),
                  ("Angle", c_ushort),
                  ("APosX", c_ushort),
                  ("APosY", c_ushort),
                  ("BPosX", c_ushort),
                  ("BPosY", c_ushort),
                  ("Angle", c_ushort),
                  ]
    def __init__(self):
@@ -20166,8 +20666,8 @@
class  tagMCNPCCntInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),
                  ("Cnt", c_int),
                  ("NPCID", c_int),
                  ("Cnt", c_int),
                  ]
    def __init__(self):
@@ -20341,13 +20841,13 @@
class  tagMCNPCInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ObjID", c_int),
                  ("NPCID", c_int),
                  ("NPCHP", c_int),
                  ("MaxHP", c_int),
                  ("ObjID", c_int),
                  ("NPCID", c_int),
                  ("NPCHP", c_int),
                  ("MaxHP", c_int),
                  ("IsActive", c_ubyte),    #这个NPC是否活着
                  ("PosX", c_ushort),
                  ("PosY", c_ushort),
                  ("PosX", c_ushort),
                  ("PosY", c_ushort),
                  ("RefreshSecond", c_int),    # 剩余多少秒刷新
                  ]
@@ -20489,9 +20989,9 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),
                  ("PosX", c_ushort),
                  ("PosY", c_ushort),
                  ("NPCID", c_int),
                  ("PosX", c_ushort),
                  ("PosY", c_ushort),
                  ]
    def __init__(self):
@@ -20549,7 +21049,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),
                  ("NPCID", c_int),
                  ]
    def __init__(self):
@@ -20601,7 +21101,7 @@
    PlayerID = 0    #(DWORD PlayerID)//玩家ID
    EquipClassLV = 0    #(BYTE EquipClassLV)
    ItemDataSize = 0    #(WORD ItemDataSize)
    ItemData = ""    #(String ItemData)//物品记录
    ItemData = ""    #(String ItemData)//物品记录
    data = None
    def __init__(self):
@@ -20783,9 +21283,9 @@
class  tagMCRunTaskAwardRecord(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Type", c_ubyte),
                  ("Num", c_int),
                  ("AwardState", c_ubyte),
                  ("Type", c_ubyte),
                  ("Num", c_int),
                  ("AwardState", c_ubyte),
                  ]
    def __init__(self):
@@ -20900,7 +21400,7 @@
    ItemDataSize = 0    #(DWORD ItemDataSize)
    ItemData = ""    #(String ItemData)//物品记录
    PlusDataSize = 0    #(DWORD PlusDataSize)
    PlusData = ""    #(String PlusData)//扩展记录
    PlusData = ""    #(String PlusData)//扩展记录
    data = None
    def __init__(self):
@@ -20996,7 +21496,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GuideID", c_ushort),
                  ("GuideID", c_ushort),
                  ]
    def __init__(self):
@@ -21046,8 +21546,8 @@
class  tagRefreshType(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RefreshType", c_ubyte),
                  ("Value", c_int),
                  ("RefreshType", c_ubyte),
                  ("Value", c_int),
                  ]
    def __init__(self):
@@ -21235,7 +21735,7 @@
class  tagMCItemDayUseCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemID", c_int),
                  ("UseCnt", c_ushort),    # 今日已使用次数
                  ]
@@ -21338,6 +21838,58 @@
#------------------------------------------------------
# A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult
class  tagMCLingQiEquipBreakResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MakeItemID", c_int),    #突破后的物品ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA8
        self.SubCmd = 0x15
        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 = 0xA8
        self.SubCmd = 0x15
        self.MakeItemID = 0
        return
    def GetLength(self):
        return sizeof(tagMCLingQiEquipBreakResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult:
                                Cmd:%s,
                                SubCmd:%s,
                                MakeItemID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MakeItemID
                                )
        return DumpString
m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult
#------------------------------------------------------
# A8 14 合成结果通知 #tagMCMakeItemAnswer
class  tagMCMakeItemAnswer(Structure):
@@ -21345,7 +21897,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MakeType", c_ubyte),    #类型      TMakeItemType
                  ("MakeType", c_ubyte),    #类型        TMakeItemType
                  ("Result", c_ubyte),    #是否成功
                  ("MakeItemID", c_int),    #合成的物品ID
                  ]
@@ -21959,118 +22511,6 @@
m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
#------------------------------------------------------
# A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
class  tagMCZhuXianDecomposeItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),    #物品ID
                  ("ItemCnt", c_ubyte),    #物品数量
                  ("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.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCZhuXianDecomposeItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
class  tagMCZhuXianDecomposeResult(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)//数量
    ItemList = list()    #(vector<tagMCZhuXianDecomposeItem> ItemList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA8
        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):
            temItemList = tagMCZhuXianDecomposeItem()
            _pos = temItemList.ReadData(_lpData, _pos)
            self.ItemList.append(temItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x15
        self.Cnt = 0
        self.ItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.ItemList[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.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                ItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
#------------------------------------------------------
@@ -26556,6 +26996,9 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("State", c_ubyte),    #0-不可领 1-可领 2-已领取
                  ("CTGTotal", c_int),    #本次活动已累计充值,单位元
                  ("FireworksBuyCount", c_ushort),    #已购买高级烟花数
                  ("FirewordsScore", c_int),    #当前累计所有烟花总积分
                  ]
    def __init__(self):
@@ -26573,6 +27016,9 @@
        self.Cmd = 0xAA
        self.SubCmd = 0x14
        self.State = 0
        self.CTGTotal = 0
        self.FireworksBuyCount = 0
        self.FirewordsScore = 0
        return
    def GetLength(self):
@@ -26585,18 +27031,132 @@
        DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
                                Cmd:%s,
                                SubCmd:%s,
                                State:%d
                                State:%d,
                                CTGTotal:%d,
                                FireworksBuyCount:%d,
                                FirewordsScore:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.State
                                self.State,
                                self.CTGTotal,
                                self.FireworksBuyCount,
                                self.FirewordsScore
                                )
        return DumpString
m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
#------------------------------------------------------
# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
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
#------------------------------------------------------
@@ -28087,7 +28647,7 @@
    Head = tagHead()
    PointAttrIDCount = 0    #(BYTE PointAttrIDCount)// 点类型个数
    PointAttrIDList = list()    #(vector<BYTE> PointAttrIDList)// 点类型列表
    PointValueList = list()    #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
    PointValueList = list()    #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表
    data = None
    def __init__(self):
@@ -28104,7 +28664,7 @@
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.PointAttrIDList.append(value)
        for i in range(self.PointAttrIDCount):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.PointValueList.append(value)
        return _pos
@@ -28123,7 +28683,7 @@
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.PointAttrIDCount
        length += 2 * self.PointAttrIDCount
        length += 4 * self.PointAttrIDCount
        return length
@@ -28134,7 +28694,7 @@
        for i in range(self.PointAttrIDCount):
            data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
        for i in range(self.PointAttrIDCount):
            data = CommFunc.WriteWORD(data, self.PointValueList[i])
            data = CommFunc.WriteDWORD(data, self.PointValueList[i])
        return data
    def OutputString(self):