From 856beb9858f9e108f27353fd3019d9b7d2e51c42 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 04 九月 2018 19:30:03 +0800
Subject: [PATCH] Fix: 3253 【后端】寻宝仓库一键取出优化;

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py |   75 ++++++++++++++++++++++++++++++++-----
 1 files changed, 64 insertions(+), 11 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index aeca269..a8b7c46 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -38,6 +38,8 @@
 import PlayerCompensation
 import PlayerFamilyParty
 import PlayerFamilySWRH
+import PlayerViewCache
+import GameWorldBoss
 import PlayerTalk
 
 import copy
@@ -659,6 +661,47 @@
         if msg not in family.GetName():
             continue
         familyViewPack.Family.append(__GetFamilyView(i, family))
+    familyViewPack.PageCount = len(familyViewPack.Family)
+    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
@@ -1362,6 +1405,10 @@
         PlayerControl.NotifyCode(curPlayer, "DungeonGuardSkyText2")
         return
     
+    if GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyRobBoss):        
+        PlayerControl.NotifyCode(curPlayer, "FairyGrabBossExitError")
+        return
+    
     tagPlayerName = curTagMember.GetName()  # 被踢玩家名
     tagPlayerID = curTagMember.GetPlayerID()  # 被踢玩家ID
     tagFamilyLV = curTagMember.GetFamilyLV()  # 被踢玩家职位
@@ -1436,6 +1483,11 @@
     if PlayerFamilySWRH.IsInFamilySWRH():
         PlayerControl.NotifyCode(curPlayer, "DungeonGuardSkyText1")
         return
+    
+    if GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyRobBoss):        
+        PlayerControl.NotifyCode(curPlayer, "FairyGrabBossExitError")
+        return
+    
     #XW_JZ_LeaveFamily   <n color="0,190,255">{%S1%}</n><n color="255,255,0">退出了家族!</n>  25  -   -
     NotifyAllFamilyMemberMsg(curFamily, curPlayer, "XW_JZ_LeaveFamily", [curPlayer.GetName()])
     
@@ -1470,6 +1522,7 @@
     # 玩家战盟名变更处理
     __OnFamilyNameChange(leavePlayerID, '')
     AddFamilyIDToFightPowerChangeList(curFamily.GetID())
+    PlayerViewCache.OnPlayerLeaveFamily(leavePlayerID)
     return
 
 #//////////////////////////////////////////////////////////////
@@ -2452,13 +2505,13 @@
             
         familyMoney = family.GetMoney()
         
-        useMoney = GetFamilySetting(family, ChConfig.Def_FamilySetting_SystemLostMoney)
-        
-        #家族资金不足, 解散
-        if familyMoney < useMoney:
-            family.SetMoney(0)
-            delFamilyList.append(family)
-            continue
+#        useMoney = GetFamilySetting(family, ChConfig.Def_FamilySetting_SystemLostMoney)
+#        
+#        #家族资金不足, 解散
+#        if familyMoney < useMoney:
+#            family.SetMoney(0)
+#            delFamilyList.append(family)
+#            continue
         #多久没人上线,解散
         offlineDay = GetLastOnlineMemberOfflineTime(family)
         GameWorld.DebugLog('    仙盟%s %s天没人上线了'%(family.GetID(), offlineDay))
@@ -2474,10 +2527,10 @@
                                                    ChConfig.Def_Family_ClearRequestAddNote_Day)
         
         #此处不通知地图服务器家族资金变更
-        family.SetMoney(familyMoney - useMoney)
-        if useMoney > 0:
-            #帮会日常维持消耗{%S1%}银两帮会资金
-            PlayerControl.FamilyNotify(family.GetID(), 'jiazu_lhs_272921', [useMoney])
+#        family.SetMoney(familyMoney - useMoney)
+#        if useMoney > 0:
+#            #帮会日常维持消耗{%S1%}银两帮会资金
+#            PlayerControl.FamilyNotify(family.GetID(), 'jiazu_lhs_272921', [useMoney])
         #自动传位
         __AutoChangeLeader(family)
         

--
Gitblit v1.8.0