hch
2019-04-20 945b1b54d5041f091bcb2b14a78b6c18bc4d93e5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
@@ -28,6 +28,9 @@
import ItemControler
import IpyGameDataPY
import ChEquip
import FBCommon
import BossHurtMng
import time
import json
@@ -70,6 +73,7 @@
    sendPack.PlusData = curPlayerPlusData
    sendPack.PlusDataSize = len(curPlayerPlusData)
    sendPack.IsLogouting = IsLogouting #通知本次同步是否下线前保存
    sendPack.OffTime = int(time.time())    # 最后一次发送即当做离线时间
    NetPackCommon.SendPyPackToGameServer(sendPack)
    GameWorld.DebugLog('ViewCache### UpdateGameServerPlayerCache out')
    return
@@ -81,15 +85,18 @@
    #-----------
    #玩家属性缓存
    curPlayerPropDict = {}
    curPlayerPropDict["AccID"] = curPlayer.GetAccID()
    curPlayerPropDict["LV"] = curPlayer.GetLV()
    curPlayerPropDict["RealmLV"] = curPlayer.GetOfficialRank()
    curPlayerPropDict["Job"] = curPlayer.GetJob()
    curPlayerPropDict["JobRank"] = PlayerControl.GetJobRank(curPlayer)
    curPlayerPropDict["VIPLV"] = curPlayer.GetVIPLv()
    curPlayerPropDict["Name"] = curPlayer.GetPlayerName()
    curPlayerPropDict["FamilyID"] = curPlayer.GetFamilyID()
    curPlayerPropDict["FamilyName"] = curPlayer.GetFamilyName()
    curPlayerPropDict["FightPower"] = curPlayer.GetFightPower()
    curPlayerPropDict["AppID"] = GameWorld.GetPlayerPlatform(curPlayer)
    curPlayerPropDict["EquipShowSwitch"] = curPlayer.GetEquipShowSwitch()
    curPlayerPropDict["ServerGroupID"] = PlayerControl.GetPlayerServerGroupID(curPlayer)
    #仙魔之争所需属性
    curPlayerPropDict["MinAtk"] = curPlayer.GetMinAtk()
    curPlayerPropDict["MaxAtk"] = curPlayer.GetMaxAtk()
@@ -98,9 +105,23 @@
    #推送提醒
    curPlayerPropDict[ChConfig.Def_PDict_GeTuiSet] = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GeTuiSet)
    curPlayerPropDict[ChConfig.Def_PDict_NoGeTuiTime] = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NoGeTuiTime)
    curPlayerPropDict['GeTuiClientID'] = curPlayer.GetAccountData().GetGeTuiClientID()
    curPlayerPropDict['Time'] = int(time.time())    # 最后一次发送即当做离线时间
    
    # 各类功能 BOSS次数, BOSS相关对应B.Boss信息.xlsx的CntMark
    # 封魔坛剩余次数
    enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % ChConfig.Def_FBMapID_SealDemon)
    maxCnt = FBCommon.GetEnterFBMaxCnt(curPlayer, ChConfig.Def_FBMapID_SealDemon)
    curPlayerPropDict['CntMark_%s'%ChConfig.Def_FBMapID_SealDemon] = max(maxCnt - enterCnt, 0)
    # 诛仙BOSS剩余次数
    enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % ChConfig.Def_FBMapID_ZhuXianBoss)
    maxCnt = FBCommon.GetEnterFBMaxCnt(curPlayer, ChConfig.Def_FBMapID_ZhuXianBoss)
    curPlayerPropDict['CntMark_%s'%ChConfig.Def_FBMapID_ZhuXianBoss] = max(maxCnt - enterCnt, 0)
    # 世界BOSS剩余次数
    curPlayerPropDict['CntMark_%s'%ShareDefine.Def_Boss_Func_World] = BossHurtMng.GetCanKillBossCnt(curPlayer, ShareDefine.Def_Boss_Func_World)
    # BOSS之家剩余次数
    curPlayerPropDict['CntMark_%s'%ShareDefine.Def_Boss_Func_Home] = BossHurtMng.GetCanKillBossCnt(curPlayer, ShareDefine.Def_Boss_Func_Home)
    # 神兽BOSS剩余次数
    curPlayerPropDict['CntMark_%s'%ShareDefine.Def_Boss_Func_Dogz] = BossHurtMng.GetCanKillBossCnt(curPlayer, ShareDefine.Def_Boss_Func_Dogz)
    #-----------
    #装备数据打包缓存
    curEquipItemList = __GetPackEquipCacheList(curPlayer, IPY_GameWorld.rptEquip)
@@ -119,7 +140,7 @@
    #翅膀信息在翅膀装备位对应装备信息
    
    #部位强化数据
    curPlayerPlusDict["EquipPartStarLV"] = __GetEquipPartStarLVInfo(curPlayer)
    curPlayerPlusDict["EquipPartStarLV"] = __GetEquipPartPlusLVInfo(curPlayer)
    
    #部位宝石数据
    curPlayerPlusDict["EquipPartStone"] = __GetEquipPartStoneInfo(curPlayer)
@@ -142,8 +163,6 @@
    #法宝数据
    curPlayerPlusDict["MagicWeapon"] = __GetMagicWeaponInfo(curPlayer)
    
    #部位套装数据
    curPlayerPlusDict["EquipPartSuite"] = __GetEquipPartSuiteInfo(curPlayer)
    #魂石、丹药使用个数
    curPlayerPlusDict["Fruit"] = PlayerAttrFruit.GetAttrFruitEatCntDict(curPlayer)
    
@@ -159,13 +178,13 @@
            dataDict.pop(key)
    return dataDict
## 公共部位强化星级信息{部位索引:星级, ...}
def __GetEquipPartStarLVInfo(curPlayer):
## 公共部位强化星级信息{部位索引:强化等级, ...}
def __GetEquipPartPlusLVInfo(curPlayer):
    pType = IPY_GameWorld.rptEquip # 暂时只取装备背包,之后有扩展再修改
    indexList = ChConfig.Pack_EquipPart_CanPlusStar[pType]
    starLVInfoDict = {}
    for i in indexList:
        starLV = ChEquip.GetEquipPartStarLV(curPlayer, pType, i)
        starLV = ChEquip.GetEquipPartPlusLV(curPlayer, pType, i)
        if starLV:
            starLVInfoDict[i] = starLV
    return starLVInfoDict
@@ -198,17 +217,6 @@
            stoneInfoList.append({"Place":place, "LV":washLV, "Value":valueList})
    return stoneInfoList
## 公共部位套装等级信息{部位索引:{套装类型:套装等级,..}, ...}
def __GetEquipPartSuiteInfo(curPlayer):
    suiteInfoDict = {}
    equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
    for equipIndexList in equipSuitTypeDict.values():
        for i in equipIndexList:
            suiteInfo = ChEquip.GetSuiteInfoByPlace(curPlayer, i)
            if suiteInfo:
                suiteInfoDict[i] = suiteInfo
    return suiteInfoDict
## 灵宠信息
def __GetPetInfo(curPlayer):
@@ -253,8 +261,8 @@
## 符印信息
def __GetRuneInfo(curPlayer):
    runeDict = {}
    runeUnlockList = IpyGameDataPY.GetFuncEvalCfg("RuneUnlock", 1)
    for holeNum in xrange(1, len(runeUnlockList) + 1):
    runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
    for holeNum in xrange(1, runeHoleCnt + 1):
        runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
        if not runeData:
            continue
@@ -287,8 +295,8 @@
        itemDict = {}
        itemDict["ItemIndex"] = curEquip.GetItemPlaceIndex()
        itemDict["ItemID"] = curEquip.GetItemTypeID()
        itemDict["IsBind"] = int(curEquip.GetIsBind())
        itemDict["IsSuite"] = int(curEquip.GetIsSuite())
        itemDict["IsAuctionItem"] = int(ItemControler.GetIsAuctionItem(curEquip))
        #itemDict["IsSuite"] = int(curEquip.GetIsSuite())
        userData = curEquip.GetUserData()
        if userData and userData != "{}":
            itemDict["UserData"] = userData