From 545986a8fdde345b28cf3004be84c6cfe79a3dc1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 19 四月 2019 11:29:12 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(跨服分区逻辑优化,支持跨服妖王分区状态同步)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py | 56 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 32 insertions(+), 24 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
index aa723b7..4d3572c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
+++ b/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
--
Gitblit v1.8.0