From c77f9ab6cebf625b07075bf6242ab86fff94a5db Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 02 八月 2024 17:17:51 +0800
Subject: [PATCH] 10229 【越南】【主干】【港台】【砍树】古神战场修改(增加功能组队系统;古神支持组队进入,组队参与可增加原当被召集人成就146;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py |  904 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 904 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c3fa85f..0aceafa 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -12634,6 +12634,854 @@
 
 
 #------------------------------------------------------
+# B9 23 功能队伍解散 #tagGCFuncTeamDissolve
+
+class  tagGCFuncTeamDissolve(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("TeamID", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x23
+        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 = 0xB9
+        self.SubCmd = 0x23
+        self.TeamID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCFuncTeamDissolve)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 23 功能队伍解散 //tagGCFuncTeamDissolve:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                TeamID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.TeamID
+                                )
+        return DumpString
+
+
+m_NAtagGCFuncTeamDissolve=tagGCFuncTeamDissolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamDissolve.Cmd,m_NAtagGCFuncTeamDissolve.SubCmd))] = m_NAtagGCFuncTeamDissolve
+
+
+#------------------------------------------------------
+# B9 22 功能队伍列表 #tagGCFuncTeamList
+
+class  tagGCFuncTeamMem(Structure):
+    ServerID = 0    #(DWORD ServerID)
+    PlayerID = 0    #(DWORD PlayerID)
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)// 玩家名,size = NameLen
+    LV = 0    #(WORD LV)// 玩家等级
+    Job = 0    #(BYTE Job)// 玩家职业
+    RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    FightPower = 0    #(DWORD FightPower)// 战力,求余亿
+    FightPowerEx = 0    #(DWORD FightPowerEx)// 战力,整除亿
+    Value1 = 0    #(DWORD Value1)//值1
+    Value2 = 0    #(DWORD Value2)//值2
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.ServerID = 0
+        self.PlayerID = 0
+        self.NameLen = 0
+        self.Name = ""
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        self.FightPower = 0
+        self.FightPowerEx = 0
+        self.Value1 = 0
+        self.Value2 = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.Name)
+        length += 2
+        length += 1
+        length += 2
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.FightPower)
+        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+        data = CommFunc.WriteDWORD(data, self.Value1)
+        data = CommFunc.WriteDWORD(data, self.Value2)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                ServerID:%d,
+                                PlayerID:%d,
+                                NameLen:%d,
+                                Name:%s,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d,
+                                FightPower:%d,
+                                FightPowerEx:%d,
+                                Value1:%d,
+                                Value2:%d
+                                '''\
+                                %(
+                                self.ServerID,
+                                self.PlayerID,
+                                self.NameLen,
+                                self.Name,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV,
+                                self.FightPower,
+                                self.FightPowerEx,
+                                self.Value1,
+                                self.Value2
+                                )
+        return DumpString
+
+
+class  tagGCFuncTeam(Structure):
+    TeamID = 0    #(DWORD TeamID)
+    CreateTime = 0    #(DWORD CreateTime)//创建队伍时间戳
+    FuncMapEx = 0    #(DWORD FuncMapEx)//功能地图扩展,如不同的层级
+    NameLen = 0    #(BYTE NameLen)
+    TeamName = ""    #(String TeamName)//队伍名称
+    CaptainID = 0    #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID
+    MinLV = 0    #(WORD MinLV)//最低等级限制
+    MinFightPower = 0    #(DWORD MinFightPower)//最低战力限制,求余亿
+    MinFightPowerEx = 0    #(DWORD MinFightPowerEx)//最低战力限制,整除亿
+    ServerOnly = 0    #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
+    NeedCheck = 0    #(BYTE NeedCheck)//是否需要审核
+    Value1 = 0    #(DWORD Value1)//值1
+    Value2 = 0    #(DWORD Value2)//值2
+    MemberCount = 0    #(BYTE MemberCount)
+    MemberList = list()    #(vector<tagGCFuncTeamMem> MemberList)// 成员列表
+    ApplyCount = 0    #(WORD ApplyCount)
+    ApplyIDList = list()    #(vector<DWORD> ApplyIDList)// 申请玩家ID列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.MemberCount):
+            temMemberList = tagGCFuncTeamMem()
+            _pos = temMemberList.ReadData(_lpData, _pos)
+            self.MemberList.append(temMemberList)
+        self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.ApplyCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ApplyIDList.append(value)
+        return _pos
+
+    def Clear(self):
+        self.TeamID = 0
+        self.CreateTime = 0
+        self.FuncMapEx = 0
+        self.NameLen = 0
+        self.TeamName = ""
+        self.CaptainID = 0
+        self.MinLV = 0
+        self.MinFightPower = 0
+        self.MinFightPowerEx = 0
+        self.ServerOnly = 0
+        self.NeedCheck = 0
+        self.Value1 = 0
+        self.Value2 = 0
+        self.MemberCount = 0
+        self.MemberList = list()
+        self.ApplyCount = 0
+        self.ApplyIDList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.TeamName)
+        length += 4
+        length += 2
+        length += 4
+        length += 4
+        length += 1
+        length += 1
+        length += 4
+        length += 4
+        length += 1
+        for i in range(self.MemberCount):
+            length += self.MemberList[i].GetLength()
+        length += 2
+        length += 4 * self.ApplyCount
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.TeamID)
+        data = CommFunc.WriteDWORD(data, self.CreateTime)
+        data = CommFunc.WriteDWORD(data, self.FuncMapEx)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.TeamName)
+        data = CommFunc.WriteDWORD(data, self.CaptainID)
+        data = CommFunc.WriteWORD(data, self.MinLV)
+        data = CommFunc.WriteDWORD(data, self.MinFightPower)
+        data = CommFunc.WriteDWORD(data, self.MinFightPowerEx)
+        data = CommFunc.WriteBYTE(data, self.ServerOnly)
+        data = CommFunc.WriteBYTE(data, self.NeedCheck)
+        data = CommFunc.WriteDWORD(data, self.Value1)
+        data = CommFunc.WriteDWORD(data, self.Value2)
+        data = CommFunc.WriteBYTE(data, self.MemberCount)
+        for i in range(self.MemberCount):
+            data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
+        data = CommFunc.WriteWORD(data, self.ApplyCount)
+        for i in range(self.ApplyCount):
+            data = CommFunc.WriteDWORD(data, self.ApplyIDList[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                TeamID:%d,
+                                CreateTime:%d,
+                                FuncMapEx:%d,
+                                NameLen:%d,
+                                TeamName:%s,
+                                CaptainID:%d,
+                                MinLV:%d,
+                                MinFightPower:%d,
+                                MinFightPowerEx:%d,
+                                ServerOnly:%d,
+                                NeedCheck:%d,
+                                Value1:%d,
+                                Value2:%d,
+                                MemberCount:%d,
+                                MemberList:%s,
+                                ApplyCount:%d,
+                                ApplyIDList:%s
+                                '''\
+                                %(
+                                self.TeamID,
+                                self.CreateTime,
+                                self.FuncMapEx,
+                                self.NameLen,
+                                self.TeamName,
+                                self.CaptainID,
+                                self.MinLV,
+                                self.MinFightPower,
+                                self.MinFightPowerEx,
+                                self.ServerOnly,
+                                self.NeedCheck,
+                                self.Value1,
+                                self.Value2,
+                                self.MemberCount,
+                                "...",
+                                self.ApplyCount,
+                                "..."
+                                )
+        return DumpString
+
+
+class  tagGCFuncTeamList(Structure):
+    Head = tagHead()
+    FuncMapID = 0    #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
+    FuncMapEx = 0    #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级,0代表所有
+    StartIndex = 0    #(DWORD StartIndex)// 查看的起始索引, 默认0
+    QueryCnt = 0    #(BYTE QueryCnt)// 查看条数,默认20,最大不超过100
+    HaveSpace = 0    #(BYTE HaveSpace)// 是否只查看有空位置的队伍
+    IDLimitType = 0    #(BYTE IDLimitType)// ID限制类型:1-同仙盟队长;2-同ServerGroupID队长;3-同ServerID队长
+    SearchLen = 0    #(BYTE SearchLen)
+    SearchMsg = ""    #(String SearchMsg)// 指定搜索时有用,可搜索指定队伍ID或模糊搜索队伍名称,搜索时返回最多QueryCnt个数的队伍
+    LoopIndex = 0    #(DWORD LoopIndex)// 服务器检索到的索引,列表下拉时下一个查询包的StartIndex从这个LoopIndex开始
+    TeamCount = 0    #(BYTE TeamCount)// 如果返回的队伍数小于QueryCnt,代表服务器已经没有满足条件的队伍了,列表再下拉时不再发查询包
+    TeamList = list()    #(vector<tagGCFuncTeam> TeamList)
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB9
+        self.Head.SubCmd = 0x22
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.StartIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.QueryCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.HaveSpace,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.IDLimitType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.SearchLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.SearchMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.SearchLen)
+        self.LoopIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TeamCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TeamCount):
+            temTeamList = tagGCFuncTeam()
+            _pos = temTeamList.ReadData(_lpData, _pos)
+            self.TeamList.append(temTeamList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB9
+        self.Head.SubCmd = 0x22
+        self.FuncMapID = 0
+        self.FuncMapEx = 0
+        self.StartIndex = 0
+        self.QueryCnt = 0
+        self.HaveSpace = 0
+        self.IDLimitType = 0
+        self.SearchLen = 0
+        self.SearchMsg = ""
+        self.LoopIndex = 0
+        self.TeamCount = 0
+        self.TeamList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        length += 1
+        length += 1
+        length += 1
+        length += len(self.SearchMsg)
+        length += 4
+        length += 1
+        for i in range(self.TeamCount):
+            length += self.TeamList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.FuncMapID)
+        data = CommFunc.WriteDWORD(data, self.FuncMapEx)
+        data = CommFunc.WriteDWORD(data, self.StartIndex)
+        data = CommFunc.WriteBYTE(data, self.QueryCnt)
+        data = CommFunc.WriteBYTE(data, self.HaveSpace)
+        data = CommFunc.WriteBYTE(data, self.IDLimitType)
+        data = CommFunc.WriteBYTE(data, self.SearchLen)
+        data = CommFunc.WriteString(data, self.SearchLen, self.SearchMsg)
+        data = CommFunc.WriteDWORD(data, self.LoopIndex)
+        data = CommFunc.WriteBYTE(data, self.TeamCount)
+        for i in range(self.TeamCount):
+            data = CommFunc.WriteString(data, self.TeamList[i].GetLength(), self.TeamList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                FuncMapID:%d,
+                                FuncMapEx:%d,
+                                StartIndex:%d,
+                                QueryCnt:%d,
+                                HaveSpace:%d,
+                                IDLimitType:%d,
+                                SearchLen:%d,
+                                SearchMsg:%s,
+                                LoopIndex:%d,
+                                TeamCount:%d,
+                                TeamList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.FuncMapID,
+                                self.FuncMapEx,
+                                self.StartIndex,
+                                self.QueryCnt,
+                                self.HaveSpace,
+                                self.IDLimitType,
+                                self.SearchLen,
+                                self.SearchMsg,
+                                self.LoopIndex,
+                                self.TeamCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCFuncTeamList=tagGCFuncTeamList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamList.Head.Cmd,m_NAtagGCFuncTeamList.Head.SubCmd))] = m_NAtagGCFuncTeamList
+
+
+#------------------------------------------------------
+# B9 20 功能队伍刷新 #tagGCFuncTeamRefresh
+
+class  tagGCFuncTeamRefreshApply(Structure):
+    ServerID = 0    #(DWORD ServerID)
+    PlayerID = 0    #(DWORD PlayerID)
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)// 玩家名,size = NameLen
+    LV = 0    #(WORD LV)// 玩家等级
+    Job = 0    #(BYTE Job)// 玩家职业
+    RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    FightPower = 0    #(DWORD FightPower)// 战力,求余亿
+    FightPowerEx = 0    #(DWORD FightPowerEx)// 战力,整除亿
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.ServerID = 0
+        self.PlayerID = 0
+        self.NameLen = 0
+        self.Name = ""
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        self.FightPower = 0
+        self.FightPowerEx = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.Name)
+        length += 2
+        length += 1
+        length += 2
+        length += 4
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.FightPower)
+        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                ServerID:%d,
+                                PlayerID:%d,
+                                NameLen:%d,
+                                Name:%s,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d,
+                                FightPower:%d,
+                                FightPowerEx:%d
+                                '''\
+                                %(
+                                self.ServerID,
+                                self.PlayerID,
+                                self.NameLen,
+                                self.Name,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV,
+                                self.FightPower,
+                                self.FightPowerEx
+                                )
+        return DumpString
+
+
+class  tagGCFuncTeamRefreshMem(Structure):
+    ServerID = 0    #(DWORD ServerID)
+    PlayerID = 0    #(DWORD PlayerID)
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)// 玩家名,size = NameLen
+    LV = 0    #(WORD LV)// 玩家等级
+    Job = 0    #(BYTE Job)// 玩家职业
+    RealmLV = 0    #(WORD RealmLV)// 玩家境界
+    FightPower = 0    #(DWORD FightPower)// 战力,求余亿
+    FightPowerEx = 0    #(DWORD FightPowerEx)// 战力,整除亿
+    Value1 = 0    #(DWORD Value1)//值1
+    Value2 = 0    #(DWORD Value2)//值2
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.ServerID = 0
+        self.PlayerID = 0
+        self.NameLen = 0
+        self.Name = ""
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        self.FightPower = 0
+        self.FightPowerEx = 0
+        self.Value1 = 0
+        self.Value2 = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.Name)
+        length += 2
+        length += 1
+        length += 2
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteWORD(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.Job)
+        data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.FightPower)
+        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+        data = CommFunc.WriteDWORD(data, self.Value1)
+        data = CommFunc.WriteDWORD(data, self.Value2)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                ServerID:%d,
+                                PlayerID:%d,
+                                NameLen:%d,
+                                Name:%s,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d,
+                                FightPower:%d,
+                                FightPowerEx:%d,
+                                Value1:%d,
+                                Value2:%d
+                                '''\
+                                %(
+                                self.ServerID,
+                                self.PlayerID,
+                                self.NameLen,
+                                self.Name,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV,
+                                self.FightPower,
+                                self.FightPowerEx,
+                                self.Value1,
+                                self.Value2
+                                )
+        return DumpString
+
+
+class  tagGCFuncTeamRefresh(Structure):
+    Head = tagHead()
+    TeamID = 0    #(DWORD TeamID)
+    CreateTime = 0    #(DWORD CreateTime)//创建队伍时间戳
+    FuncMapID = 0    #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID
+    FuncMapEx = 0    #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级
+    NameLen = 0    #(BYTE NameLen)
+    TeamName = ""    #(String TeamName)// 队伍名称
+    CaptainID = 0    #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID
+    MinLV = 0    #(WORD MinLV)//最低等级限制
+    MinFightPower = 0    #(DWORD MinFightPower)//最低战力限制,求余亿
+    MinFightPowerEx = 0    #(DWORD MinFightPowerEx)//最低战力限制,整除亿
+    ServerOnly = 0    #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是
+    NeedCheck = 0    #(BYTE NeedCheck)//是否需要审核
+    Value1 = 0    #(DWORD Value1)//值1
+    Value2 = 0    #(DWORD Value2)//值2
+    MemberCount = 0    #(BYTE MemberCount)
+    MemberList = list()    #(vector<tagGCFuncTeamRefreshMem> MemberList)// 成员列表
+    ApplyCount = 0    #(WORD ApplyCount)
+    ApplyIDList = list()    #(vector<DWORD> ApplyIDList)// 申请玩家ID列表
+    ApplyInfoList = list()    #(vector<tagGCFuncTeamRefreshApply> ApplyInfoList)// 申请玩家明细列表
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB9
+        self.Head.SubCmd = 0x20
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.MemberCount):
+            temMemberList = tagGCFuncTeamRefreshMem()
+            _pos = temMemberList.ReadData(_lpData, _pos)
+            self.MemberList.append(temMemberList)
+        self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        for i in range(self.ApplyCount):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.ApplyIDList.append(value)
+        for i in range(self.ApplyCount):
+            temApplyInfoList = tagGCFuncTeamRefreshApply()
+            _pos = temApplyInfoList.ReadData(_lpData, _pos)
+            self.ApplyInfoList.append(temApplyInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB9
+        self.Head.SubCmd = 0x20
+        self.TeamID = 0
+        self.CreateTime = 0
+        self.FuncMapID = 0
+        self.FuncMapEx = 0
+        self.NameLen = 0
+        self.TeamName = ""
+        self.CaptainID = 0
+        self.MinLV = 0
+        self.MinFightPower = 0
+        self.MinFightPowerEx = 0
+        self.ServerOnly = 0
+        self.NeedCheck = 0
+        self.Value1 = 0
+        self.Value2 = 0
+        self.MemberCount = 0
+        self.MemberList = list()
+        self.ApplyCount = 0
+        self.ApplyIDList = list()
+        self.ApplyInfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        length += len(self.TeamName)
+        length += 4
+        length += 2
+        length += 4
+        length += 4
+        length += 1
+        length += 1
+        length += 4
+        length += 4
+        length += 1
+        for i in range(self.MemberCount):
+            length += self.MemberList[i].GetLength()
+        length += 2
+        length += 4 * self.ApplyCount
+        for i in range(self.ApplyCount):
+            length += self.ApplyInfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.TeamID)
+        data = CommFunc.WriteDWORD(data, self.CreateTime)
+        data = CommFunc.WriteDWORD(data, self.FuncMapID)
+        data = CommFunc.WriteDWORD(data, self.FuncMapEx)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.TeamName)
+        data = CommFunc.WriteDWORD(data, self.CaptainID)
+        data = CommFunc.WriteWORD(data, self.MinLV)
+        data = CommFunc.WriteDWORD(data, self.MinFightPower)
+        data = CommFunc.WriteDWORD(data, self.MinFightPowerEx)
+        data = CommFunc.WriteBYTE(data, self.ServerOnly)
+        data = CommFunc.WriteBYTE(data, self.NeedCheck)
+        data = CommFunc.WriteDWORD(data, self.Value1)
+        data = CommFunc.WriteDWORD(data, self.Value2)
+        data = CommFunc.WriteBYTE(data, self.MemberCount)
+        for i in range(self.MemberCount):
+            data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
+        data = CommFunc.WriteWORD(data, self.ApplyCount)
+        for i in range(self.ApplyCount):
+            data = CommFunc.WriteDWORD(data, self.ApplyIDList[i])
+        for i in range(self.ApplyCount):
+            data = CommFunc.WriteString(data, self.ApplyInfoList[i].GetLength(), self.ApplyInfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                TeamID:%d,
+                                CreateTime:%d,
+                                FuncMapID:%d,
+                                FuncMapEx:%d,
+                                NameLen:%d,
+                                TeamName:%s,
+                                CaptainID:%d,
+                                MinLV:%d,
+                                MinFightPower:%d,
+                                MinFightPowerEx:%d,
+                                ServerOnly:%d,
+                                NeedCheck:%d,
+                                Value1:%d,
+                                Value2:%d,
+                                MemberCount:%d,
+                                MemberList:%s,
+                                ApplyCount:%d,
+                                ApplyIDList:%s,
+                                ApplyInfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.TeamID,
+                                self.CreateTime,
+                                self.FuncMapID,
+                                self.FuncMapEx,
+                                self.NameLen,
+                                self.TeamName,
+                                self.CaptainID,
+                                self.MinLV,
+                                self.MinFightPower,
+                                self.MinFightPowerEx,
+                                self.ServerOnly,
+                                self.NeedCheck,
+                                self.Value1,
+                                self.Value2,
+                                self.MemberCount,
+                                "...",
+                                self.ApplyCount,
+                                "...",
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagGCFuncTeamRefresh=tagGCFuncTeamRefresh()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFuncTeamRefresh.Head.Cmd,m_NAtagGCFuncTeamRefresh.Head.SubCmd))] = m_NAtagGCFuncTeamRefresh
+
+
+#------------------------------------------------------
 # B9 01 收到邀请加入队伍信息 #tagGCInviteJoinTeamInfo
 
 class  tagGCInviteJoinTeamInfo(Structure):
@@ -12945,6 +13793,62 @@
 
 
 #------------------------------------------------------
+# B9 21 查找玩家功能队伍结果 #tagGCQueryPlayerFuncTeamRet
+
+class  tagGCQueryPlayerFuncTeamRet(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("FuncMapID", c_int),    # 功能地图ID或自定义的活动功能ID
+                  ("TeamID", c_int),    # 玩家所属队伍ID,目前只同步0的情况,如果玩家有队伍统一B920封包同步处理
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB9
+        self.SubCmd = 0x21
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB9
+        self.SubCmd = 0x21
+        self.FuncMapID = 0
+        self.TeamID = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCQueryPlayerFuncTeamRet)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B9 21 查找玩家功能队伍结果 //tagGCQueryPlayerFuncTeamRet:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                FuncMapID:%d,
+                                TeamID:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.FuncMapID,
+                                self.TeamID
+                                )
+        return DumpString
+
+
+m_NAtagGCQueryPlayerFuncTeamRet=tagGCQueryPlayerFuncTeamRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCQueryPlayerFuncTeamRet.Cmd,m_NAtagGCQueryPlayerFuncTeamRet.SubCmd))] = m_NAtagGCQueryPlayerFuncTeamRet
+
+
+#------------------------------------------------------
 # B9 08 推荐组队的附近玩家信息 #tagGCRecommendNearbyPlayerList
 
 class  tagGCRecommendNearbyPlayer(Structure):

--
Gitblit v1.8.0