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