From f44c22844d7176ed48b1963f36454637efaa0a54 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期六, 27 四月 2019 20:10:20 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py | 49 +++++++++++++------------------------------------ 1 files changed, 13 insertions(+), 36 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py index 3315d81..122ab4c 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerXMZZ.py @@ -40,7 +40,6 @@ RecType = ShareDefine.Def_UniversalGameRecType_XMZZStageRecord RecType1 = ShareDefine.Def_UniversalGameRecType_XMZZPKInfoRecord #strValue3 {投注索引:结果,..} -g_playerPowerDict = {} #玩家战力缓存 g_historyPKDict = {} #历史对手ID缓存 ( @@ -89,10 +88,8 @@ def XMZZOndayEx(): #过天 - global g_playerPowerDict global g_historyPKDict PyDataManager.GetXMZZManager().ResetXMZZ() - g_playerPowerDict = {} #玩家战力缓存 g_historyPKDict = {} #历史对手ID缓存 return @@ -262,17 +259,15 @@ if playerID not in self.vsPlayerIDDict: return pkPlayerID = self.vsPlayerIDDict[playerID] - curCache = PlayerViewCache.ViewCacheMgr.FindCache(pkPlayerID) + curCache = PlayerViewCache.FindViewCache(pkPlayerID) if not curCache: return packData = ChPyNetSendPack.tagGCXMZZFightInfo() packData.Clear() packData.PlayerID = pkPlayerID - packData.PropData = curCache.GetPropData() + packData.PropData = curCache.PropData packData.PropDataSize = len(packData.PropData) - packData.ItemData = PlayerViewCache.GetItemData(curCache) - packData.ItemDataSize = len(packData.ItemData) NetPackCommon.SendFakePack(curPlayer, packData) return @@ -609,7 +604,6 @@ def RandomBattler(curPlayer, overInfo=[]): #筛选对手 根据连胜次数一定几率随机到高级机器人,否则每5个的第1个低于自己战力 先从小范围随机,再大范围随机,没有则用NPC - global g_playerPowerDict global g_historyPKDict myPlayerID = curPlayer.GetID() GameWorld.DebugLog(' 仙魔之争开始筛选对手', myPlayerID) @@ -624,7 +618,6 @@ pkPlayerID = 0 # 默认低级机器人 isRobotNPC = True - pkDataDict = {} conWinCnt = XMZZPlayerDict[myPlayerID].ConWinCnt #参数 XMZZSpecialNPCRate = eval(IpyGameDataPY.GetFuncCompileCfg('XMZZSpecialNPCRate')) XMZZSuperNPCRate = eval(IpyGameDataPY.GetFuncCompileCfg('XMZZSpecialNPCRate', 2)) @@ -654,15 +647,9 @@ underList1, aboveList1 = [], [] #小范围 underList2, aboveList2 = [], [] #大范围 - ViewCacheMgr = GameWorld.GameWorldData.GetPlayerViewCacheMgr() - for i in xrange(ViewCacheMgr.GetCount()): - curCache = ViewCacheMgr.At(i) - itemData = PlayerViewCache.GetItemData(curCache) - if not itemData: - #没有装备信息 - continue - playerID = curCache.GetPlayerID() - + pyViewCacheMgr = PyDataManager.GetPlayerViewCachePyManager() + playerViewCachePyDict = pyViewCacheMgr.playerViewCachePyDict + for playerID, curCache in playerViewCachePyDict.items(): if myPlayerID == playerID: #不和自己pk continue @@ -673,14 +660,9 @@ #已匹配过的跳过 continue - if playerID in g_playerPowerDict: - power = g_playerPowerDict[playerID] - else: - propDataDict = eval(curCache.GetPropData()) - power = propDataDict.get('FightPower', 0) - g_playerPowerDict[playerID] = power + propDataDict = PlayerViewCache.GetCachePropDataDict(curCache) + power = propDataDict.get('FightPower', 0) - pkDataDict[playerID] = [curCache.GetPropData(), itemData] #GameWorld.DebugLog(' 筛选对手 playerID=%s,power=%s' % (playerID, power)) if minPower1 < power < myPower: underList1.append(playerID) @@ -714,34 +696,29 @@ if isRobotNPC: #机器人, 职业随机 openJob = IpyGameDataPY.GetFuncEvalCfg("OpenJob") - PropData = str({"Job":random.choice(openJob), "LV":curPlayer.GetLV()}) - ItemData = "" # 前端自己根据职业及NPC等级处理 + pkPlayerPropData = {"Job":random.choice(openJob), "LV":curPlayer.GetLV()} else: if myPlayerID in g_historyPKDict: g_historyPKDict[myPlayerID].append(pkPlayerID) else: g_historyPKDict[myPlayerID] = [pkPlayerID] - PropData, ItemData = pkDataDict.get(pkPlayerID, ["", ""]) + pkPlayerCache = PlayerViewCache.FindViewCache(pkPlayerID) + pkPlayerPropData = {} if not pkPlayerCache else PlayerViewCache.GetCachePropDataDict(pkPlayerCache) XMZZManager.vsPlayerIDDict[myPlayerID] = pkPlayerID - GameWorld.DebugLog(' 仙魔之争匹配对手信息 pkPlayerID=%s, PropData=%s, overInfo=%s' % (pkPlayerID, PropData, overInfo), myPlayerID) + GameWorld.DebugLog(' 仙魔之争匹配对手信息 pkPlayerID=%s, pkPlayerPropData=%s, overInfo=%s' % (pkPlayerID, pkPlayerPropData, overInfo), myPlayerID) #通知前端 packData = ChPyNetSendPack.tagGCXMZZFightInfo() packData.Clear() packData.PlayerID = pkPlayerID - packData.PropData = PropData + packData.PropData = str(pkPlayerPropData) packData.PropDataSize = len(packData.PropData) - packData.ItemData = ItemData - packData.ItemDataSize = len(packData.ItemData) NetPackCommon.SendFakePack(curPlayer, packData) #通知地图 - pkPlayerPropData = {} - if PropData: - pkPlayerPropData = eval(PropData) - else: + if not pkPlayerPropData: GameWorld.ErrLog("仙魔之争没有匹配到对手信息!fightPower=%s" % curPlayer.GetFightPower(), myPlayerID) vsPlayerInfo = [pkPlayerID, pkPlayerPropData] XMZZManager.MapServer_XMZZPKInfo(curPlayer, overInfo, vsPlayerInfo) -- Gitblit v1.8.0