| | |
| | | import ChPyNetSendPack
|
| | | import IpyGameDataPY
|
| | | import IPY_GameWorld
|
| | | import PlayerOnline
|
| | | import PlayerBeauty
|
| | | import ShareDefine
|
| | | import TurnAttack
|
| | | import DBDataMgr
|
| | |
| | |
|
| | | return False
|
| | |
|
| | | def GetLineupFightPower(curCache, lineupID):
|
| | | ## 获取查看缓存中某个阵容对应的战力
|
| | | if not curCache:
|
| | | return 0
|
| | | plusDict = curCache.GetPlusDict()
|
| | | if "Lineup" in plusDict:
|
| | | lineupDict = plusDict["Lineup"]
|
| | | if str(lineupID) in lineupDict:
|
| | | lineupInfo = lineupDict[str(lineupID)]
|
| | | if "FightPower" in lineupInfo:
|
| | | return lineupInfo["FightPower"]
|
| | | return curCache.GetFightPowerTotal()
|
| | |
|
| | | def FindBattleViewCache(playerID):
|
| | | ## 获取可战斗的玩家缓存
|
| | | # @return: None-无;curCache-有返回该缓存对象
|
| | |
| | | GameWorld.DebugLog("加载机器人缓存: %s" % playerID)
|
| | | curCache = viewCacheMgr.AddPlayerViewCache(playerID)
|
| | | curCache = UpdRobotViewCache(curCache, playerID)
|
| | | curCache.SetPlayerName("%s%s" % (GameWorld.GbkToCode("主公"), playerID))
|
| | |
|
| | | # 假玩家,默认添加
|
| | | elif ShareDefine.FackPlayerIDStart <= playerID <= ShareDefine.FackPlayerIDMax:
|
| | |
| | |
|
| | | # 阵容
|
| | | lineupDict = {}
|
| | | for lineupID in ShareDefine.LineupList:
|
| | | for lineupID in ShareDefine.NeedViewCacheLineupIDList:
|
| | | lineupInfo = TurnAttack.GetPlayerLineupInfo(curPlayer, lineupID)
|
| | | if not lineupInfo:
|
| | | continue
|
| | | lineupDict["%s" % lineupID] = lineupInfo
|
| | | |
| | | olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
|
| | |
|
| | | # 其他
|
| | | # 红颜
|
| | | attrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_Beauty)
|
| | | actCnt = PlayerBeauty.GetBeautyActCnt(curPlayer)
|
| | | beautyDict = {"Cnt":actCnt, "Attr":{str(k):v for k, v in attrDict.items()}}
|
| | |
|
| | | plusDict = {"Equip":equipDict, "Lineup":lineupDict}
|
| | | # 坐骑
|
| | | attrDict = olPlayer.GetCalcAttr(ChConfig.Def_CalcAttr_Horse)
|
| | | horseLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorseLV)
|
| | | classLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorseClassLV)
|
| | | horseDict = {"LV":horseLV, "ClassLV":classLV, "Attr":{str(k):v for k, v in attrDict.items()}}
|
| | | |
| | | plusDict = {"Equip":equipDict, "Lineup":lineupDict, "Beauty":beautyDict, "Horse":horseDict}
|
| | | curCache.SetPlusDict(plusDict)
|
| | |
|
| | | return curCache
|
| | |
| | | }
|
| | | return robotDict
|
| | |
|
| | | def UpdRobotViewCache(curCache, robotID):
|
| | | def LoadRobot():
|
| | | ## 加载机器人缓存,在服务器启动、重读配置时加载
|
| | | robotFPSortList = []
|
| | | viewCacheMgr = DBDataMgr.GetPlayerViewCacheMgr()
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetRobotCount()):
|
| | | ipyData = ipyDataMgr.GetRobotByIndex(index)
|
| | | robotPlayerID = ipyData.GetID()
|
| | | curCache = viewCacheMgr.GetPlayerViewCache(robotPlayerID)
|
| | | if not curCache:
|
| | | curCache = viewCacheMgr.AddPlayerViewCache(robotPlayerID)
|
| | | if not curCache:
|
| | | continue
|
| | | UpdRobotViewCache(curCache, robotPlayerID, ipyData)
|
| | | robotFPSortList.append([curCache.GetFightPowerTotal(), robotPlayerID])
|
| | | robotFPSortList.sort(reverse=True) # 战力倒序排序
|
| | | IpyGameDataPY.SetConfigEx("robotFPSortList", robotFPSortList)
|
| | | GameWorld.Log("加载机器人战力排序: %s, %s" % (len(robotFPSortList), robotFPSortList))
|
| | | return robotFPSortList
|
| | |
|
| | | def GetRobotFightPowerSortList():
|
| | | ## 机器人战力倒序排序列表
|
| | | # @return: 倒序排序列表 [[战力, 机器人ID], ...],外部使用可随机修改,不会打乱原始排序
|
| | | sortList = []
|
| | | robotFPSortList = IpyGameDataPY.GetConfigEx("robotFPSortList")
|
| | | if not robotFPSortList:
|
| | | robotFPSortList = LoadRobot()
|
| | | if robotFPSortList:
|
| | | sortList += robotFPSortList
|
| | | return sortList
|
| | |
|
| | | def UpdRobotViewCache(curCache, robotID, robotIpyData=None):
|
| | | ## 更新机器人查看缓存
|
| | | robotIpyData = IpyGameDataPY.GetIpyGameData("Robot", robotID)
|
| | | if not robotIpyData:
|
| | | robotIpyData = IpyGameDataPY.GetIpyGameData("Robot", robotID)
|
| | | if not robotIpyData:
|
| | | return
|
| | | try:
|
| | |
| | |
|
| | | #curCache.SetAccID(dbPlayer.AccID)
|
| | |
|
| | | curCache.SetPlayerName(robotInfo.get("PlayerName", "p%s" % robotID))
|
| | | curCache.SetPlayerName(GameWorld.GbkToCode(robotIpyData.GetRobotName()))
|
| | | curCache.SetLV(robotInfo.get("LV", 1))
|
| | | curCache.SetJob(robotInfo.get("Job", 1))
|
| | | curCache.SetRealmLV(robotInfo.get("RealmLV", 0))
|