From 7b112d5e0399064f63b6f9c5754ac9974956026c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 28 十一月 2018 20:08:41 +0800
Subject: [PATCH] 4923 【后端】【1.3】神兵技能 -- 优化神兵护盾恢复逻辑

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py |   36 +++++++++++++++++++-----------------
 1 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index 8afd776..1d7b633 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -348,7 +348,8 @@
     
     # 玩家战盟名变更处理
     __OnFamilyNameChange(jionPlayer.GetPlayerID(), curFamily.GetName())
-    
+    #玩家缓存
+    PlayerViewCache.OnPlayerFamilyChange(jionPlayer.GetPlayerID(), curFamily.GetID(), curFamily.GetName())
     #加入仙盟联赛成员
     GameWorldFamilyWar.AddFamilyWarMem(jionPlayer.GetPlayerID(), curFamily.GetID())
     GameWorldFamilyWar.CheckPlayerJoinFamilyWarInfo(jionPlayer)
@@ -1524,7 +1525,7 @@
     # 玩家战盟名变更处理
     __OnFamilyNameChange(leavePlayerID, '')
     AddFamilyIDToFightPowerChangeList(curFamily.GetID())
-    PlayerViewCache.OnPlayerLeaveFamily(leavePlayerID)
+    PlayerViewCache.OnPlayerFamilyChange(leavePlayerID, 0, "")
     return
 
 #//////////////////////////////////////////////////////////////
@@ -2533,8 +2534,6 @@
 #        if useMoney > 0:
 #            #帮会日常维持消耗{%S1%}银两帮会资金
 #            PlayerControl.FamilyNotify(family.GetID(), 'jiazu_lhs_272921', [useMoney])
-        #自动传位
-        __AutoChangeLeader(family)
         
         #通知客户端刷新
         family.Broadcast_FamilyChange()
@@ -2592,6 +2591,13 @@
         
     return
 
+def FamilyOnHour():
+    familyManager = GameWorld.GetFamilyManager()
+    for i in xrange(familyManager.GetCount()):
+        family = familyManager.GetAt(i)
+        #自动传位
+        __AutoChangeLeader(family)
+    return
 #---------------------------------------------------------------------
 ##通知地图服务器, 玩家家族属性刷新
 # @param curFamily 家族实例
@@ -2710,16 +2716,15 @@
         return 0
 
     leaderID = curFamily.GetLeaderID()
-    # 帮主在线
-    if GameWorld.GetPlayerManager().FindPlayerByID(leaderID) != None:
-        return 0
 
     curMember = curFamily.FindMember(leaderID)    
     if curMember == None:
         GameWorld.Log("GetLeaderOfflineTime->FindMember, None;%s" % leaderID)
         return 0
-    
-    offLineTime = GameWorld.ChangeTimeNumToStr(curMember.GetExattr2())
+    offLineTimeNum = curMember.GetExattr2()
+    if not offLineTimeNum:
+        return 0
+    offLineTime = GameWorld.ChangeTimeNumToStr(offLineTimeNum)
     return GameWorld.GetPastHour(offLineTime)
 
 def GetLastOnlineMemberOfflineTime(family):
@@ -2727,17 +2732,14 @@
     offLineTime = 0
     for i in range(0, family.GetCount()):
         member = family.GetAt(i) 
-        playerID = member.GetPlayerID()
-        tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
-        if tagPlayer:
-            return 0
-        if not member.GetExattr2():
+        offLineTimeNum = member.GetExattr2()
+        if not offLineTimeNum:
             #有人在线直接返回
             return 0
         if not offLineTime:
-            offLineTime = member.GetExattr2()
+            offLineTime = offLineTimeNum
         else:
-            offLineTime = max(offLineTime, member.GetExattr2())
+            offLineTime = max(offLineTime, offLineTimeNum)
     if not offLineTime:
         return 0
     offLineTime = GameWorld.ChangeTimeNumToStr(offLineTime)
@@ -2747,7 +2749,7 @@
     '''自动传位'''
     # 获得帮主下线了多久(小时)
     leaderOffLineTime = GetLeaderOfflineTime(curFamily)
-    GameWorld.DebugLog('帮主下线了%s小时'%leaderOffLineTime)
+    GameWorld.DebugLog('帮主下线了%s小时'%leaderOffLineTime, curFamily.GetID())
     if leaderOffLineTime < IpyGameDataPY.GetFuncCfg('AutoChangeLeader'):
         return
     

--
Gitblit v1.8.0