From 8a9416e0fe494446f5aa121b9b5c05abebf5c6b9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 01 九月 2018 17:55:28 +0800
Subject: [PATCH] Add: A4 12 搜索家族支持;

---
 ServerPython/CoreServerGroup/GameServer/PyNetPack.ini                              |    6 +
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py              |   41 ++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py |   85 +++++++++++++++++++++
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py                      |   85 +++++++++++++++++++++
 4 files changed, 216 insertions(+), 1 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/PyNetPack.ini b/ServerPython/CoreServerGroup/GameServer/PyNetPack.ini
index e07f7b6..ed48a02 100644
--- a/ServerPython/CoreServerGroup/GameServer/PyNetPack.ini
+++ b/ServerPython/CoreServerGroup/GameServer/PyNetPack.ini
@@ -39,7 +39,7 @@
 Writer = Alee
 Releaser = Alee
 RegType = 0
-RegisterPackCount = 8
+RegisterPackCount = 9
 
 PacketCMD_1=0xA4
 PacketSubCMD_1=0x01
@@ -73,6 +73,10 @@
 PacketSubCMD_8=0x04
 PacketCallFunc_8=PyCreatFamily
 
+PacketCMD_9=0xA4
+PacketSubCMD_9=0x12
+PacketCallFunc_9=PySearchFamily
+
 [GameWorldFamilyWar]
 ScriptName = GameWorldLogic\GameWorldFamilyWar.py
 Writer = hxp
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 6bc333c..246d65a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -808,6 +808,91 @@
 
 
 #------------------------------------------------------
+# A4 12 搜索家族 #tagCGPySearchFamily
+
+class  tagCGPySearchFamily(Structure):
+    Head = tagHead()
+    MsgLen = 0    #(BYTE MsgLen)//模糊搜索家族,如果输入为空,则为不限制该条件
+    Msg = ""    #(String Msg)//size = MsgLen
+    LV = 0    #(BYTE LV)//最低家族等级,如果为0,则不限制该条件
+    MaxCount = 0    #(BYTE MaxCount)//搜索结果所需最大条数,后端限制最多返回20条
+    IsSearching = 0    #(BYTE IsSearching)//默认1,如果有指定其他值,则返回指定值
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x12
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
+        self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.MaxCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.IsSearching,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x12
+        self.MsgLen = 0
+        self.Msg = ""
+        self.LV = 0
+        self.MaxCount = 0
+        self.IsSearching = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += len(self.Msg)
+        length += 1
+        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.MsgLen)
+        data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
+        data = CommFunc.WriteBYTE(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.MaxCount)
+        data = CommFunc.WriteBYTE(data, self.IsSearching)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                MsgLen:%d,
+                                Msg:%s,
+                                LV:%d,
+                                MaxCount:%d,
+                                IsSearching:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.MsgLen,
+                                self.Msg,
+                                self.LV,
+                                self.MaxCount,
+                                self.IsSearching
+                                )
+        return DumpString
+
+
+m_NAtagCGPySearchFamily=tagCGPySearchFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPySearchFamily.Head.Cmd,m_NAtagCGPySearchFamily.Head.SubCmd))] = m_NAtagCGPySearchFamily
+
+
+#------------------------------------------------------
 #A4 01  查看家族第N页#tagCGViewFamilyPage
 
 class  tagCGViewFamilyPage(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index db968a2..a8b7c46 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -665,6 +665,47 @@
     NetPackCommon.SendFakePack(curPlayer, familyViewPack)
     return
 
+#// A4 12 搜索家族 #tagCGPySearchFamily
+#
+#struct    tagCGPySearchFamily
+#{
+#    tagHead        Head;
+#    BYTE        MsgLen;        //模糊搜索家族,如果输入为空,则为不限制该条件
+#    char        Msg[MsgLen];    //size = MsgLen
+#    BYTE        LV;        //最低家族等级,如果为0,则不限制该条件
+#    BYTE        MaxCount;    //搜索结果所需最大条数,后端限制最多返回20条
+#    BYTE        IsSearching;    //默认1,如果有指定其他值,则返回指定值
+#};
+def PySearchFamily(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    
+    msg = clientData.Msg
+    minFamilyLV = clientData.LV
+    maxCount = min(20, clientData.MaxCount)
+    IsSearching = clientData.IsSearching
+    
+    familyMgr = GameWorld.GetFamilyManager()
+    familyViewPack = ChPyNetSendPack.tagGCPyAllFamilyView()
+    familyViewPack.Clear()
+    familyViewPack.IsSearching = IsSearching
+    familyViewPack.TotalCount = 1
+    #familyViewPack.CurPage = viewPage
+    familyViewPack.Family = []
+    for i, familyID in enumerate(PyGameData.g_sortFamilyIDList):
+        family = familyMgr.FindFamily(familyID)
+        if not family:
+            continue
+        if msg not in family.GetName():
+            continue
+        if minFamilyLV and family.GetLV() < minFamilyLV:
+            continue
+        familyViewPack.Family.append(__GetFamilyView(i, family))
+        if len(familyViewPack.Family) >= maxCount:
+            break
+    familyViewPack.PageCount = len(familyViewPack.Family)
+    NetPackCommon.SendFakePack(curPlayer, familyViewPack)
+    return
+
 #class   IPY_CFamilyChangeBroadcast
 #{
 #public:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 6bc333c..246d65a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -808,6 +808,91 @@
 
 
 #------------------------------------------------------
+# A4 12 搜索家族 #tagCGPySearchFamily
+
+class  tagCGPySearchFamily(Structure):
+    Head = tagHead()
+    MsgLen = 0    #(BYTE MsgLen)//模糊搜索家族,如果输入为空,则为不限制该条件
+    Msg = ""    #(String Msg)//size = MsgLen
+    LV = 0    #(BYTE LV)//最低家族等级,如果为0,则不限制该条件
+    MaxCount = 0    #(BYTE MaxCount)//搜索结果所需最大条数,后端限制最多返回20条
+    IsSearching = 0    #(BYTE IsSearching)//默认1,如果有指定其他值,则返回指定值
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x12
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
+        self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.MaxCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.IsSearching,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA4
+        self.Head.SubCmd = 0x12
+        self.MsgLen = 0
+        self.Msg = ""
+        self.LV = 0
+        self.MaxCount = 0
+        self.IsSearching = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += len(self.Msg)
+        length += 1
+        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.MsgLen)
+        data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
+        data = CommFunc.WriteBYTE(data, self.LV)
+        data = CommFunc.WriteBYTE(data, self.MaxCount)
+        data = CommFunc.WriteBYTE(data, self.IsSearching)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                MsgLen:%d,
+                                Msg:%s,
+                                LV:%d,
+                                MaxCount:%d,
+                                IsSearching:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.MsgLen,
+                                self.Msg,
+                                self.LV,
+                                self.MaxCount,
+                                self.IsSearching
+                                )
+        return DumpString
+
+
+m_NAtagCGPySearchFamily=tagCGPySearchFamily()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGPySearchFamily.Head.Cmd,m_NAtagCGPySearchFamily.Head.SubCmd))] = m_NAtagCGPySearchFamily
+
+
+#------------------------------------------------------
 #A4 01  查看家族第N页#tagCGViewFamilyPage
 
 class  tagCGViewFamilyPage(Structure):

--
Gitblit v1.8.0