ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -2356,6 +2356,62 @@
#------------------------------------------------------
# B5 18 拍卖行修改关注物品 #tagCGAttentionAuctionItemChange
class  tagCGAttentionAuctionItemChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemID", c_int),
                  ("IsAttention", c_ubyte),    #是否关注,取消关注发0
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB5
        self.SubCmd = 0x18
        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 = 0xB5
        self.SubCmd = 0x18
        self.ItemID = 0
        self.IsAttention = 0
        return
    def GetLength(self):
        return sizeof(tagCGAttentionAuctionItemChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B5 18 拍卖行修改关注物品 //tagCGAttentionAuctionItemChange:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemID:%d,
                                IsAttention:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemID,
                                self.IsAttention
                                )
        return DumpString
m_NAtagCGAttentionAuctionItemChange=tagCGAttentionAuctionItemChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGAttentionAuctionItemChange.Cmd,m_NAtagCGAttentionAuctionItemChange.SubCmd))] = m_NAtagCGAttentionAuctionItemChange
#------------------------------------------------------
# B5 03 交易所查询上架物品#tagCGPYQueryBourseItemOnSale
class  tagCGPYQueryBourseItemOnSale(Structure):
@@ -2427,22 +2483,19 @@
#------------------------------------------------------
# B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem
# B5 16 拍卖行查询关注中的拍品 #tagCGQueryAttentionAuctionItem
class  tagCGQueryAuctionItem(Structure):
class  tagCGQueryAttentionAuctionItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("QueryType", c_ushort),    #查询的分类标识
                  ("QueryCount", c_ubyte),    #指定返回个数,0为全部
                  ("IsFamily", c_ubyte),    #是否查询仙盟拍品
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB5
        self.SubCmd = 0x10
        self.SubCmd = 0x16
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -2452,38 +2505,148 @@
    def Clear(self):
        self.Cmd = 0xB5
        self.SubCmd = 0x10
        self.QueryType = 0
        self.QueryCount = 0
        self.IsFamily = 0
        self.SubCmd = 0x16
        return
    def GetLength(self):
        return sizeof(tagCGQueryAuctionItem)
        return sizeof(tagCGQueryAttentionAuctionItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B5 10 拍卖行查询拍卖中的物品 //tagCGQueryAuctionItem:
        DumpString = '''// B5 16 拍卖行查询关注中的拍品 //tagCGQueryAttentionAuctionItem:
                                Cmd:%s,
                                SubCmd:%s,
                                QueryType:%d,
                                QueryCount:%d,
                                IsFamily:%d
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.QueryType,
                                self.QueryCount,
                                self.IsFamily
                                self.SubCmd
                                )
        return DumpString
m_NAtagCGQueryAttentionAuctionItem=tagCGQueryAttentionAuctionItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAttentionAuctionItem.Cmd,m_NAtagCGQueryAttentionAuctionItem.SubCmd))] = m_NAtagCGQueryAttentionAuctionItem
#------------------------------------------------------
# B5 10 拍卖行查询拍卖中的物品 #tagCGQueryAuctionItem
class  tagCGQueryAuctionItem(Structure):
    Head = tagHead()
    Job = 0    #(BYTE Job)//过滤职业,0为不限制
    ItemTypeCount = 0    #(BYTE ItemTypeCount)
    ItemTypeList = list()    #(vector<DWORD> ItemTypeList)//指定的物品类型
    ClassLV = 0    #(BYTE ClassLV)//过滤阶数,0为不限制
    SpecItemIDCount = 0    #(BYTE SpecItemIDCount)//指定物品ID个数
    SpecItemIDList = list()    #(vector<DWORD> SpecItemIDList)//指定物品ID
    FromItemGUID = ""    #(char FromItemGUID[40])//从哪个物品开始查询
    QueryDir = 0    #(BYTE QueryDir)//查询方向,1-往后查,2-往前查
    QueryCount = 0    #(BYTE QueryCount)//查询个数,0为全部
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x10
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ItemTypeCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.ItemTypeList.append(value)
        self.ClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SpecItemIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SpecItemIDCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SpecItemIDList.append(value)
        self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x10
        self.Job = 0
        self.ItemTypeCount = 0
        self.ItemTypeList = list()
        self.ClassLV = 0
        self.SpecItemIDCount = 0
        self.SpecItemIDList = list()
        self.FromItemGUID = ""
        self.QueryDir = 0
        self.QueryCount = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 4 * self.ItemTypeCount
        length += 1
        length += 1
        length += 4 * self.SpecItemIDCount
        length += 40
        length += 1
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteBYTE(data, self.ItemTypeCount)
        for i in range(self.ItemTypeCount):
            data = CommFunc.WriteDWORD(data, self.ItemTypeList[i])
        data = CommFunc.WriteBYTE(data, self.ClassLV)
        data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
        for i in range(self.SpecItemIDCount):
            data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
        data = CommFunc.WriteString(data, 40, self.FromItemGUID)
        data = CommFunc.WriteBYTE(data, self.QueryDir)
        data = CommFunc.WriteBYTE(data, self.QueryCount)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Job:%d,
                                ItemTypeCount:%d,
                                ItemTypeList:%s,
                                ClassLV:%d,
                                SpecItemIDCount:%d,
                                SpecItemIDList:%s,
                                FromItemGUID:%s,
                                QueryDir:%d,
                                QueryCount:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Job,
                                self.ItemTypeCount,
                                "...",
                                self.ClassLV,
                                self.SpecItemIDCount,
                                "...",
                                self.FromItemGUID,
                                self.QueryDir,
                                self.QueryCount
                                )
        return DumpString
m_NAtagCGQueryAuctionItem=tagCGQueryAuctionItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Cmd,m_NAtagCGQueryAuctionItem.SubCmd))] = m_NAtagCGQueryAuctionItem
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryAuctionItem.Head.Cmd,m_NAtagCGQueryAuctionItem.Head.SubCmd))] = m_NAtagCGQueryAuctionItem
#------------------------------------------------------
@@ -2494,6 +2657,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("RecordType", c_ubyte),    #记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
                  ]
    def __init__(self):
@@ -2510,6 +2674,7 @@
    def Clear(self):
        self.Cmd = 0xB5
        self.SubCmd = 0x12
        self.RecordType = 0
        return
    def GetLength(self):
@@ -2521,11 +2686,13 @@
    def OutputString(self):
        DumpString = '''// B5 12 拍卖行查询拍卖记录 //tagCGQueryAuctionRecord:
                                Cmd:%s,
                                SubCmd:%s
                                SubCmd:%s,
                                RecordType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                self.SubCmd,
                                self.RecordType
                                )
        return DumpString
@@ -2535,51 +2702,67 @@
#------------------------------------------------------
# B5 11 拍卖行查询个人拍卖中的物品 #tagCGQueryPlayerAuctionItem
# B5 17 拍卖行查询定位目标拍品 #tagCGQueryTagAuctionItem
class  tagCGQueryPlayerAuctionItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
class  tagCGQueryTagAuctionItem(Structure):
    Head = tagHead()
    ItemGUID = ""    #(char ItemGUID[40])
    ItemID = 0    #(DWORD ItemID)
    data = None
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB5
        self.SubCmd = 0x11
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x17
        return
    def ReadData(self, stringData, _pos=0, _len=0):
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Cmd = 0xB5
        self.SubCmd = 0x11
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x17
        self.ItemGUID = ""
        self.ItemID = 0
        return
    def GetLength(self):
        return sizeof(tagCGQueryPlayerAuctionItem)
        length = 0
        length += self.Head.GetLength()
        length += 40
        length += 4
        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.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        return data
    def OutputString(self):
        DumpString = '''// B5 11 拍卖行查询个人拍卖中的物品 //tagCGQueryPlayerAuctionItem:
                                Cmd:%s,
                                SubCmd:%s
        DumpString = '''
                                Head:%s,
                                ItemGUID:%s,
                                ItemID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                self.Head.OutputString(),
                                self.ItemGUID,
                                self.ItemID
                                )
        return DumpString
m_NAtagCGQueryPlayerAuctionItem=tagCGQueryPlayerAuctionItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryPlayerAuctionItem.Cmd,m_NAtagCGQueryPlayerAuctionItem.SubCmd))] = m_NAtagCGQueryPlayerAuctionItem
m_NAtagCGQueryTagAuctionItem=tagCGQueryTagAuctionItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTagAuctionItem.Head.Cmd,m_NAtagCGQueryTagAuctionItem.Head.SubCmd))] = m_NAtagCGQueryTagAuctionItem
#------------------------------------------------------
@@ -4966,6 +5149,54 @@
#------------------------------------------------------
# A2 32 神秘商店刷新 #tagCMRefreshMysticalShop
class  tagCMRefreshMysticalShop(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA2
        self.SubCmd = 0x32
        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 = 0xA2
        self.SubCmd = 0x32
        return
    def GetLength(self):
        return sizeof(tagCMRefreshMysticalShop)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A2 32 神秘商店刷新 //tagCMRefreshMysticalShop:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop
#------------------------------------------------------
# A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem
class  tagCMRefreshShopItem(Structure):
@@ -6013,6 +6244,58 @@
#------------------------------------------------------
# A3 16 装备强化进化 #tagCMEquipPlusEvolve
class  tagCMEquipPlusEvolve(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemIndex", c_ushort),    #装备在背包中索引
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x16
        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 = 0x16
        self.ItemIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMEquipPlusEvolve)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemIndex
                                )
        return DumpString
m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
#------------------------------------------------------
#A3 05 宝石摘取 #tagCMEquipStonePick
class  tagCMEquipStonePick(Structure):
@@ -6748,118 +7031,6 @@
m_NAtagCMItemCompound=tagCMItemCompound()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemCompound.Head.Cmd,m_NAtagCMItemCompound.Head.SubCmd))] = m_NAtagCMItemCompound
#------------------------------------------------------
#A3 17 套装合成#tagCMSuitCompose
class  tagCMSuitCompose(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SuiteType", c_ubyte),    # 套装类型 1普通 2强化
                  ("EquipPlace", c_ubyte),    # 装备位置
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x17
        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 = 0x17
        self.SuiteType = 0
        self.EquipPlace = 0
        return
    def GetLength(self):
        return sizeof(tagCMSuitCompose)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A3 17 套装合成//tagCMSuitCompose:
                                Cmd:%s,
                                SubCmd:%s,
                                SuiteType:%d,
                                EquipPlace:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SuiteType,
                                self.EquipPlace
                                )
        return DumpString
m_NAtagCMSuitCompose=tagCMSuitCompose()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuitCompose.Cmd,m_NAtagCMSuitCompose.SubCmd))] = m_NAtagCMSuitCompose
#------------------------------------------------------
# A3 08 套装拆解 #tagCMSuiteDecompose
class  tagCMSuiteDecompose(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("EquipPlace", c_ubyte),    #部位索引
                  ("SuiteType", c_ubyte),    #套装类型 0代表全部类型
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        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 = 0xA3
        self.SubCmd = 0x08
        self.EquipPlace = 0
        self.SuiteType = 0
        return
    def GetLength(self):
        return sizeof(tagCMSuiteDecompose)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 08 套装拆解 //tagCMSuiteDecompose:
                                Cmd:%s,
                                SubCmd:%s,
                                EquipPlace:%d,
                                SuiteType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.EquipPlace,
                                self.SuiteType
                                )
        return DumpString
m_NAtagCMSuiteDecompose=tagCMSuiteDecompose()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSuiteDecompose.Cmd,m_NAtagCMSuiteDecompose.SubCmd))] = m_NAtagCMSuiteDecompose
#------------------------------------------------------
@@ -9238,6 +9409,90 @@
#------------------------------------------------------
# A5 C5 装备部位升星 #tagCMEquipPartStarUp
class  tagCMEquipPartStarUp(Structure):
    Head = tagHead()
    EquipPackIndex = 0    #(WORD EquipPackIndex)// 部位格子索引
    CostEquipCnt = 0    #(BYTE CostEquipCnt)// 装备个数
    CostEquipIndex = list()    #(vector<WORD> CostEquipIndex)// 装备索引
    CostEquipID = list()    #(vector<DWORD> CostEquipID)// 装备物品ID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC5
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.EquipPackIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.CostEquipCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.CostEquipCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.CostEquipIndex.append(value)
        for i in range(self.CostEquipCnt):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.CostEquipID.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC5
        self.EquipPackIndex = 0
        self.CostEquipCnt = 0
        self.CostEquipIndex = list()
        self.CostEquipID = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 1
        length += 2 * self.CostEquipCnt
        length += 4 * self.CostEquipCnt
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.EquipPackIndex)
        data = CommFunc.WriteBYTE(data, self.CostEquipCnt)
        for i in range(self.CostEquipCnt):
            data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
        for i in range(self.CostEquipCnt):
            data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                EquipPackIndex:%d,
                                CostEquipCnt:%d,
                                CostEquipIndex:%s,
                                CostEquipID:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.EquipPackIndex,
                                self.CostEquipCnt,
                                "...",
                                "..."
                                )
        return DumpString
m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
#------------------------------------------------------
# A5 48 兑换大师等级经验 #tagCMExchangeMasterEXP
class  tagCMExchangeMasterEXP(Structure):
@@ -10004,62 +10259,6 @@
#------------------------------------------------------
# A5 0D 升级法宝技能 #tagCMMagicWeaponSkillUp
class  tagCMMagicWeaponSkillUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SkillTypeID", c_ushort),
                  ("CostIndex", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x0D
        self.SkillTypeID = 0
        self.CostIndex = 0
        return
    def GetLength(self):
        return sizeof(tagCMMagicWeaponSkillUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 0D 升级法宝技能 //tagCMMagicWeaponSkillUp:
                                Cmd:%s,
                                SubCmd:%s,
                                SkillTypeID:%d,
                                CostIndex:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SkillTypeID,
                                self.CostIndex
                                )
        return DumpString
m_NAtagCMMagicWeaponSkillUp=tagCMMagicWeaponSkillUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponSkillUp.Cmd,m_NAtagCMMagicWeaponSkillUp.SubCmd))] = m_NAtagCMMagicWeaponSkillUp
#------------------------------------------------------
# A5 16 法宝状态记录 #tagCMMagicWeaponState
class  tagCMMagicWeaponState(Structure):
@@ -10161,62 +10360,6 @@
m_NAtagCMMagicWeaponUp=tagCMMagicWeaponUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMagicWeaponUp.Cmd,m_NAtagCMMagicWeaponUp.SubCmd))] = m_NAtagCMMagicWeaponUp
#------------------------------------------------------
# A5 77 玩家精炼法宝 #tagCMMWRefine
class  tagCMMWRefine(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MWID", c_int),    # 法宝ID
                  ("MaterialID", c_int),    #材料ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x77
        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 = 0x77
        self.MWID = 0
        self.MaterialID = 0
        return
    def GetLength(self):
        return sizeof(tagCMMWRefine)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 77 玩家精炼法宝 //tagCMMWRefine:
                                Cmd:%s,
                                SubCmd:%s,
                                MWID:%d,
                                MaterialID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MWID,
                                self.MaterialID
                                )
        return DumpString
m_NAtagCMMWRefine=tagCMMWRefine()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMWRefine.Cmd,m_NAtagCMMWRefine.SubCmd))] = m_NAtagCMMWRefine
#------------------------------------------------------
@@ -14897,6 +15040,66 @@
#------------------------------------------------------
#B4 0B 根据类型来决定移动的方式 #tagCMMoveByType
class  tagCMMoveByType(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PosX", c_ushort),    # 目标X
                  ("PosY", c_ushort),    # 目标Y
                  ("MoveType", c_ubyte),    #移动方式
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x0B
        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 = 0xB4
        self.SubCmd = 0x0B
        self.PosX = 0
        self.PosY = 0
        self.MoveType = 0
        return
    def GetLength(self):
        return sizeof(tagCMMoveByType)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B4 0B 根据类型来决定移动的方式 //tagCMMoveByType:
                                Cmd:%s,
                                SubCmd:%s,
                                PosX:%d,
                                PosY:%d,
                                MoveType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PosX,
                                self.PosY,
                                self.MoveType
                                )
        return DumpString
m_NAtagCMMoveByType=tagCMMoveByType()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoveByType.Cmd,m_NAtagCMMoveByType.SubCmd))] = m_NAtagCMMoveByType
#------------------------------------------------------
#B4 02 对象击退 #tagCMNPCBeatBack
class  tagCMNPCPos(Structure):
@@ -15618,6 +15821,7 @@
class  tagCMBiddingAuctionItem(Structure):
    Head = tagHead()
    ItemGUID = ""    #(char ItemGUID[40])
    BiddingPrice = 0    #(WORD BiddingPrice)//竞价价格
    data = None
    def __init__(self):
@@ -15630,6 +15834,7 @@
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.BiddingPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -15638,12 +15843,14 @@
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x14
        self.ItemGUID = ""
        self.BiddingPrice = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 40
        length += 2
        return length
@@ -15651,16 +15858,19 @@
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteWORD(data, self.BiddingPrice)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ItemGUID:%s
                                ItemGUID:%s,
                                BiddingPrice:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ItemGUID
                                self.ItemGUID,
                                self.BiddingPrice
                                )
        return DumpString