From 2bf981166e23f966e2d17088abff9a569475af2e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 23 四月 2019 15:23:21 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(进入草园通知宝箱怪攻击次数) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 63 ++++++++++++++++++------------- 1 files changed, 36 insertions(+), 27 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py index e94851e..72ccc54 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py @@ -19,13 +19,10 @@ #------------------------------------------------------------------------------ import GameWorld import ChPyNetSendPack -import IPY_PlayerDefine -import PlayerFamilyAction import PlayerControl import NetPackCommon -import ReadChConfig -import PlayerFamily -import IPY_GameServer +import PlayerFBHelpBattle +import IpyGameDataPY import ShareDefine import ChConfig @@ -53,11 +50,13 @@ ##更新缓存数据 # @param PlayerID, PropData, ItemData, PlusData, isSaveDB # @return None -def UpdatePlayerCache(PlayerID, PropData, ItemData, PlusData, isSaveDB=False): +def UpdatePlayerCache(PlayerID, PropData, ItemData, PlusData, isSaveDB=False, packData=None): curCache = ViewCacheMgr.FindCache(PlayerID) if not curCache: curCache = ViewCacheMgr.AddNewCache(PlayerID) - curCache.SetUpdateTime(GameWorld.GetCurrentDataTimeStr()) + if packData: + curCache.SetPlayerLV(packData.PlayerLV) + curCache.SetOffTime(packData.OffTime) GameWorld.DebugLog('ViewCache### UpdatePlayerCache PlayerID %s, \ @@ -81,6 +80,14 @@ curCache.SetPlusDataNoSave(PlusData,len(PlusData)) curCache.SetNeedSaveDB(isSaveDB) #设置需要保存到数据库 + # 同步更新助战信息 + if PlayerFBHelpBattle.IsInHelpBattleCheckInList(PlayerID): + PropDataDict = eval(PropData) + fightPower = PropDataDict.get("FightPower", 0) + familyID = PropDataDict.get("FamilyID", 0) + playerName = PropDataDict.get("Name", "") + PlayerFBHelpBattle.UpdateCheckInPlayerInfo(PlayerID, fightPower, familyID, playerName) + #暂时关闭 #=========================================================================== # FamilyIDKey = "FamilyID" @@ -96,20 +103,25 @@ ##玩家下线缓存数据 # @param PlayerID, PlayerLV, PropData, ItemData, PlusData # @return None -def OnPlayerLogout(PlayerID, PlayerLV, PropData, ItemData, PlusData): +def OnPlayerLogout(curPackData): + PlayerID = curPackData.PlayerID + PlayerLV = curPackData.PlayerLV #不需要保存离线数据的,直接删除缓存数据 if not IsNeedSaveLogoutPlayer(PlayerID, PlayerLV): ViewCacheMgr.DeleteCache(PlayerID) return #更新数据,并设置需要保存数据库 - UpdatePlayerCache(PlayerID, PropData, ItemData, PlusData, True) + UpdatePlayerCache(PlayerID, curPackData.PropData, curPackData.ItemData, curPackData.PlusData, True, packData=curPackData) return ## 根据规则判定是否需要继续保存离线玩家数据 # @param PlayerID, PlayerLV # @return None def IsNeedSaveLogoutPlayer(PlayerID, PlayerLV): - SaveDBLimitLV, NeedCheckBillBoardType, HighLadderLimitOrder = ReadChConfig.GetEvalChConfig("CacheSaveLimit") + if PlayerFBHelpBattle.IsInHelpBattleCheckInList(PlayerID): + return True + + SaveDBLimitLV = IpyGameDataPY.GetFuncCfg("PlayerViewCache", 1) #校验玩家等级 if PlayerLV < SaveDBLimitLV: return False @@ -118,7 +130,9 @@ # 上榜用户 def IsNeedSaveViewCacheAllInfo(PlayerID): - SaveDBLimitLV, NeedCheckBillBoardType, HighLadderLimitOrder = ReadChConfig.GetEvalChConfig("CacheSaveLimit") + if PlayerFBHelpBattle.IsInHelpBattleCheckInList(PlayerID): + return True + NeedCheckBillBoardType = IpyGameDataPY.GetFuncEvalCfg("PlayerViewCache", 2) #校验玩家是否上排行榜 billboardMgr = GameWorld.GetBillboard() for BillBoardType in NeedCheckBillBoardType: @@ -140,13 +154,6 @@ # if curBillboard.FindByID(PlayerID): # return True # -# #校验玩家竞技场是否进入排名 -# hightLadderMgr = GameWorld.GetHightLadderMgr() -# hightLadderData = hightLadderMgr.FindPlayerData(PlayerID) -# if hightLadderData: -# if hightLadderData.GetOrder() < HighLadderLimitOrder: -# return True -# # curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(PlayerID) # if curPlayer: # # 非普通成员需保存 @@ -164,12 +171,11 @@ PlayerID = curPackData.PlayerID PlayerLV = curPackData.PlayerLV if curPackData.IsLogouting: - OnPlayerLogout(PlayerID, PlayerLV, \ - curPackData.PropData, curPackData.ItemData, curPackData.PlusData) + OnPlayerLogout(curPackData) else: # 此处保存设置为True是为安全防范,比如突然断电,宕机等情况 导致误以为不保存,故等级可设置高一点 UpdatePlayerCache(PlayerID, curPackData.PropData, \ - curPackData.ItemData, curPackData.PlusData, True if PlayerLV > 150 else False) + curPackData.ItemData, curPackData.PlusData, True if PlayerLV > 150 else False, packData=curPackData) GameWorld.DebugLog('ViewCache### OnMGUpdatePlayerCache out') return @@ -259,6 +265,7 @@ answerPack.LV = 1 answerPack.RealmLV = 1 answerPack.OnlineType = ChConfig.Def_Offline + answerPack.ServerGroupID = 0 else: cacheDict = eval(curCache.GetPropData()) @@ -268,6 +275,7 @@ answerPack.LV = cacheDict["LV"] answerPack.RealmLV = cacheDict["RealmLV"] answerPack.OnlineType = ChConfig.Def_Offline + answerPack.ServerGroupID = cacheDict.get("ServerGroupID", 0) else: answerPack.PlayerID = clientPack.PlayerID @@ -277,24 +285,25 @@ answerPack.RealmLV = tagPlayer.GetOfficialRank() answerPack.OnlineType = ChConfig.Def_Online answerPack.IsInTeam = tagPlayer.GetTeamID() > 0 + answerPack.ServerGroupID = PlayerControl.GetPlayerServerGroupID(tagPlayer) curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) NetPackCommon.SendFakePack(curPlayer, answerPack) return -def OnPlayerLeaveFamily(playerID): - GameWorld.DebugLog("ViewCache->OnPlayerLeaveFamily", playerID) +def OnPlayerFamilyChange(playerID, familyID, familyName): + GameWorld.DebugLog("ViewCache->OnPlayerFamilyChange", playerID) curCache = ViewCacheMgr.FindCache(playerID) if not curCache: return PropData = eval(curCache.GetPropData()) - PropData["FamilyID"] = 0 - PropData["FamilyName"] = "" + PropData["FamilyID"] = familyID + PropData["FamilyName"] = familyName playerLV = PropData["LV"] PropData = json.dumps(PropData, ensure_ascii=False) - ItemData = curCache.GetItemData() - PlusData = curCache.GetPlusData() + ItemData = GetItemData(curCache) + PlusData = GetPlusData(curCache) UpdatePlayerCache(playerID, PropData, ItemData, PlusData, True if playerLV > 150 else False) return -- Gitblit v1.8.0