ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -1026,6 +1026,58 @@
#------------------------------------------------------
# A4 14 查看目标仙盟 #tagCGViewTagFamily
class  tagCGViewTagFamily(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagFamilyID", c_int),    # 目标仙盟ID,支持查看跨服仙盟
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA4
        self.SubCmd = 0x14
        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 = 0x14
        self.TagFamilyID = 0
        return
    def GetLength(self):
        return sizeof(tagCGViewTagFamily)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A4 14 查看目标仙盟 //tagCGViewTagFamily:
                                Cmd:%s,
                                SubCmd:%s,
                                TagFamilyID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagFamilyID
                                )
        return DumpString
m_NAtagCGViewTagFamily=tagCGViewTagFamily()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGViewTagFamily.Cmd,m_NAtagCGViewTagFamily.SubCmd))] = m_NAtagCGViewTagFamily
#------------------------------------------------------
# A9 03 关注BOSS刷新 #tagCGAttentionBoss
class  tagCGAttentionBoss(Structure):
@@ -5089,6 +5141,70 @@
#------------------------------------------------------
# C0 26 仙盟攻城战查询 #tagCGFamilyGCZQuery
class  tagCGFamilyGCZQuery(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("QueryType", c_ubyte),    #查询类型:1-成员捐献值;2-进入城池场景;3-退出城池场景;4-进入城池;5-退出城池;6-战报;7-分组仙盟成员伤害;
                  ("BatType", c_ubyte),    #指定战场类型,需要发送的查询类型: 2、4
                  ("GroupNum", c_ubyte),    #指定分组编号,需要发送的查询类型: 2、4
                  ("FamilyID", c_int),    #指定仙盟ID或城池ID,查自己盟的可不发,需要发的类型:2、4、6、7
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC0
        self.SubCmd = 0x26
        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 = 0xC0
        self.SubCmd = 0x26
        self.QueryType = 0
        self.BatType = 0
        self.GroupNum = 0
        self.FamilyID = 0
        return
    def GetLength(self):
        return sizeof(tagCGFamilyGCZQuery)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C0 26 仙盟攻城战查询 //tagCGFamilyGCZQuery:
                                Cmd:%s,
                                SubCmd:%s,
                                QueryType:%d,
                                BatType:%d,
                                GroupNum:%d,
                                FamilyID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.QueryType,
                                self.BatType,
                                self.GroupNum,
                                self.FamilyID
                                )
        return DumpString
m_NAtagCGFamilyGCZQuery=tagCGFamilyGCZQuery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyGCZQuery.Cmd,m_NAtagCGFamilyGCZQuery.SubCmd))] = m_NAtagCGFamilyGCZQuery
#------------------------------------------------------
# C0 03 强制退出跨服状态 #tagCGForceQuitCrossState
class  tagCGForceQuitCrossState(Structure):
@@ -5245,8 +5361,8 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ubyte),    #榜单类型
                  ("GroupValue1", c_ubyte),    # 分组值1
                  ("GroupValue2", c_ubyte),    # 分组值2,与分组值1组合归为同组榜单数据
                  ("GroupValue1", c_int),    # 分组值1
                  ("GroupValue2", c_int),    # 分组值2,与分组值1组合归为同组榜单数据
                  ("StartIndex", c_int),    #查看的起始名次索引, 默认0
                  ("WatchCnt", c_ubyte),    #查看条数,默认20,最大不超过100
                  ("WatchID", c_int),    #查看指定ID名次前后,如玩家ID、家族ID等
@@ -8190,6 +8306,62 @@
m_NAtagCMAddFruitUseLimit=tagCMAddFruitUseLimit()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMAddFruitUseLimit.Cmd,m_NAtagCMAddFruitUseLimit.SubCmd))] = m_NAtagCMAddFruitUseLimit
#------------------------------------------------------
# A3 10 购买商城物品 #tagCMBuyItem
class  tagCMBuyItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BuyItemIndex", c_ushort),    #购买的物品索引
                  ("BuyCount", c_int),    #购买数量
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x10
        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 = 0x10
        self.BuyItemIndex = 0
        self.BuyCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMBuyItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 10 购买商城物品 //tagCMBuyItem:
                                Cmd:%s,
                                SubCmd:%s,
                                BuyItemIndex:%d,
                                BuyCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BuyItemIndex,
                                self.BuyCount
                                )
        return DumpString
m_NAtagCMBuyItem=tagCMBuyItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyItem.Cmd,m_NAtagCMBuyItem.SubCmd))] = m_NAtagCMBuyItem
#------------------------------------------------------
@@ -18436,6 +18608,54 @@
#------------------------------------------------------
# B0 35 福地管家免费试用 #tagCMMineHouseKeeperFreeUse
class  tagCMMineHouseKeeperFreeUse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x35
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x35
        return
    def GetLength(self):
        return sizeof(tagCMMineHouseKeeperFreeUse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 35 福地管家免费试用 //tagCMMineHouseKeeperFreeUse:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMMineHouseKeeperFreeUse=tagCMMineHouseKeeperFreeUse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMineHouseKeeperFreeUse.Cmd,m_NAtagCMMineHouseKeeperFreeUse.SubCmd))] = m_NAtagCMMineHouseKeeperFreeUse
#------------------------------------------------------
# B0 30 福地物品拉 #tagCMMineItemPull
class  tagCMMineItemPull(Structure):
@@ -18507,7 +18727,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsSuper", c_ubyte),    # 是否超级刷新
                  ("RefreshType", c_ubyte),    # 刷新类型:0-自己物品普通刷新;1-自己物品超级刷新;2-周围福地玩家列表刷新
                  ]
    def __init__(self):
@@ -18524,7 +18744,7 @@
    def Clear(self):
        self.Cmd = 0xB0
        self.SubCmd = 0x31
        self.IsSuper = 0
        self.RefreshType = 0
        return
    def GetLength(self):
@@ -18537,12 +18757,12 @@
        DumpString = '''// B0 31 福地物品刷新 //tagCMMineItemRefresh:
                                Cmd:%s,
                                SubCmd:%s,
                                IsSuper:%d
                                RefreshType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsSuper
                                self.RefreshType
                                )
        return DumpString
@@ -23314,6 +23534,241 @@
#------------------------------------------------------
# C1 25 仙盟攻城战攻击 #tagCMFamilyGCZAtk
class  tagCMFamilyGCZAtk(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("AtkType", c_ubyte),    #攻击类型: 1-普通单攻;2-技能单攻;3-技能群攻;
                  ("TagCityID", c_int),    #目标城池ID,一般是仙盟ID或者特殊城池ID如修罗城城池,普攻单攻需指定目标,群攻技能发0
                  ("TagGuardID", c_int),    #目标守卫ID,一般是玩家ID或者特殊守卫ID如修罗城守卫,普攻单攻需指定目标,技能攻击发0
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        self.SubCmd = 0x25
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xC1
        self.SubCmd = 0x25
        self.AtkType = 0
        self.TagCityID = 0
        self.TagGuardID = 0
        return
    def GetLength(self):
        return sizeof(tagCMFamilyGCZAtk)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 25 仙盟攻城战攻击 //tagCMFamilyGCZAtk:
                                Cmd:%s,
                                SubCmd:%s,
                                AtkType:%d,
                                TagCityID:%d,
                                TagGuardID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.AtkType,
                                self.TagCityID,
                                self.TagGuardID
                                )
        return DumpString
m_NAtagCMFamilyGCZAtk=tagCMFamilyGCZAtk()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZAtk.Cmd,m_NAtagCMFamilyGCZAtk.SubCmd))] = m_NAtagCMFamilyGCZAtk
#------------------------------------------------------
# C1 24 仙盟攻城战捐献 #tagCMFamilyGCZContribution
class  tagCMFamilyGCZContribution(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ContributionType", c_ubyte),    #捐献类型: 0-低级;1-高级
                  ("UseCount", c_int),    #物品捐献时使用个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        self.SubCmd = 0x24
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xC1
        self.SubCmd = 0x24
        self.ContributionType = 0
        self.UseCount = 0
        return
    def GetLength(self):
        return sizeof(tagCMFamilyGCZContribution)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 24 仙盟攻城战捐献 //tagCMFamilyGCZContribution:
                                Cmd:%s,
                                SubCmd:%s,
                                ContributionType:%d,
                                UseCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ContributionType,
                                self.UseCount
                                )
        return DumpString
m_NAtagCMFamilyGCZContribution=tagCMFamilyGCZContribution()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZContribution.Cmd,m_NAtagCMFamilyGCZContribution.SubCmd))] = m_NAtagCMFamilyGCZContribution
#------------------------------------------------------
# C1 26 仙盟攻城战竞猜 #tagCMFamilyGCZGuess
class  tagCMFamilyGCZGuess(Structure):
    Head = tagHead()
    SelectCnt = 0    #(BYTE SelectCnt)
    SelectFamilyIDList = list()    #(vector<DWORD> SelectFamilyIDList)// 竞猜选择的仙盟ID排名顺序
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xC1
        self.Head.SubCmd = 0x26
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.SelectCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SelectCnt):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SelectFamilyIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xC1
        self.Head.SubCmd = 0x26
        self.SelectCnt = 0
        self.SelectFamilyIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.SelectCnt
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.SelectCnt)
        for i in range(self.SelectCnt):
            data = CommFunc.WriteDWORD(data, self.SelectFamilyIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                SelectCnt:%d,
                                SelectFamilyIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.SelectCnt,
                                "..."
                                )
        return DumpString
m_NAtagCMFamilyGCZGuess=tagCMFamilyGCZGuess()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZGuess.Head.Cmd,m_NAtagCMFamilyGCZGuess.Head.SubCmd))] = m_NAtagCMFamilyGCZGuess
#------------------------------------------------------
# C1 27 仙盟攻城战圣泉抽奖 #tagCMFamilyGCZSQ
class  tagCMFamilyGCZSQ(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GridNum", c_ubyte),    # 选中格子编号,1~n
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC1
        self.SubCmd = 0x27
        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 = 0xC1
        self.SubCmd = 0x27
        self.GridNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMFamilyGCZSQ)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C1 27 仙盟攻城战圣泉抽奖 //tagCMFamilyGCZSQ:
                                Cmd:%s,
                                SubCmd:%s,
                                GridNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GridNum
                                )
        return DumpString
m_NAtagCMFamilyGCZSQ=tagCMFamilyGCZSQ()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZSQ.Cmd,m_NAtagCMFamilyGCZSQ.SubCmd))] = m_NAtagCMFamilyGCZSQ
#------------------------------------------------------
# C1 10 幸运云购购买 #tagCMLuckyCloudBuy
class  tagCMLuckyCloudBuy(Structure):