From c0146533c921960d5ce6640446b42c1e38df3629 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 15 三月 2019 19:54:22 +0800 Subject: [PATCH] 6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(掉落的暂时默认拍品) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 34 ++++++++++++++++++---------------- 1 files changed, 18 insertions(+), 16 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py index 3da6842..959c0e7 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py @@ -32,7 +32,6 @@ import ChConfig import time -import cPickle import json ViewCacheMgr = GameWorld.GameWorldData.GetPlayerViewCacheMgr() @@ -56,11 +55,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, \ @@ -86,7 +87,7 @@ # 同步更新助战信息 if PlayerFBHelpBattle.IsInHelpBattleCheckInList(PlayerID): - PropDataDict = cPickle.loads(PropData) + PropDataDict = eval(PropData) fightPower = PropDataDict.get("FightPower", 0) familyID = PropDataDict.get("FamilyID", 0) playerName = PropDataDict.get("Name", "") @@ -107,13 +108,15 @@ ##玩家下线缓存数据 # @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 ## 根据规则判定是否需要继续保存离线玩家数据 @@ -180,12 +183,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 @@ -215,11 +217,11 @@ sendPack.PlusDataSize = len(sendPack.PlusData) else: #成功回包 缓存数据 - sendPack.PropData = json.dumps(cPickle.loads(curCache.GetPropData()), ensure_ascii=False) + sendPack.PropData = curCache.GetPropData() sendPack.PropDataSize = len(sendPack.PropData) - sendPack.ItemData = json.dumps(cPickle.loads(GetItemData(curCache)), ensure_ascii=False) + sendPack.ItemData = GetItemData(curCache) sendPack.ItemDataSize = len(sendPack.ItemData) - sendPack.PlusData = json.dumps(cPickle.loads(GetPlusData(curCache)), ensure_ascii=False) + sendPack.PlusData = GetPlusData(curCache) sendPack.PlusDataSize = len(sendPack.PlusData) NetPackCommon.SendFakePack(curPlayer, sendPack) @@ -237,7 +239,7 @@ return playerEquipList = [] - equipItemList = cPickle.loads(itemData) + equipItemList = eval(itemData) for equipItemDict in equipItemList: equipIndex = equipItemDict["ItemIndex"] if equipIndex not in ShareDefine.RoleEquipType: @@ -277,7 +279,7 @@ answerPack.OnlineType = ChConfig.Def_Offline answerPack.ServerGroupID = 0 else: - cacheDict = cPickle.loads(curCache.GetPropData()) + cacheDict = eval(curCache.GetPropData()) answerPack.PlayerID = clientPack.PlayerID answerPack.PlayerName = cacheDict["Name"] @@ -306,12 +308,12 @@ curCache = ViewCacheMgr.FindCache(playerID) if not curCache: return - PropData = cPickle.loads(curCache.GetPropData()) + PropData = eval(curCache.GetPropData()) PropData["FamilyID"] = familyID PropData["FamilyName"] = familyName playerLV = PropData["LV"] - PropData = cPickle.dumps(PropData, 2) + PropData = json.dumps(PropData, ensure_ascii=False) ItemData = GetItemData(curCache) PlusData = GetPlusData(curCache) UpdatePlayerCache(playerID, PropData, ItemData, PlusData, True if playerLV > 150 else False) -- Gitblit v1.8.0