From b26e86ed1f7d15a3a6a7ebff2e1b8201b9e8ebf5 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 01 八月 2019 14:06:57 +0800
Subject: [PATCH] 8180 【后端】【主干】优化组队打BOSS(优化掉落表现,组队打掉多份的时候只能看到归属自己的物品)
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 65 ++++++++++++++++++++------------
1 files changed, 40 insertions(+), 25 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
index 0dc634d..1cff4a0 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -35,6 +35,8 @@
import PlayerNewFairyCeremony
import PlayerUniversalGameRec
import GameWorldAverageLv
+import PlayerFamilyBoss
+import PlayerHorsePetBoss
import GameWorldProcess
import ChPyNetSendPack
import NetPackCommon
@@ -269,9 +271,9 @@
isEnd = (curDateTime == endDayDate)
# 每天按时段开启的,支持多时段
- else:
- if startDayDate <= curDateTime <= endDayDate:
- isEnd = (curDateTime == endDayDate)
+ elif startDayDate <= curDateTime <= endDayDate:
+ isEnd = (curDateTime == endDayDate)
+ if not isEnd:
for hmIndex, startHMStr in enumerate(startHMStrList):
endHMStr = endHMStrList[hmIndex]
# 每天开的, 实际开关时间只取今天的日期; 这里有个问题,全服广播的时间不是今天的, 暂不做支持,之后真有这种需求再说
@@ -660,19 +662,21 @@
GameWorld.Log(" 本周定制的开服日常活动ID列表: %s" % (customDailyIDList))
GameWorld.Log(" 今天定制的开服日常表ID列表=%s" % (todayCustomIDList))
elif isMixServer and mixServerDay <= maxCustomServerDayMix:
- customIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("DailyActionCustomMix", mixServerDay)
- if not customIpyDataList:
- customIpyDataList = []
- GameWorld.Log(" 今天定制的合服日常活动条数: %s" % len(customIpyDataList))
- for customIpyData in customIpyDataList:
+ todayCustomIDList = [] # 今天定制的数据表ID
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetDailyActionCustomMixCount()):
+ customIpyData = ipyDataMgr.GetDailyActionCustomMixByIndex(i)
dataID = customIpyData.GetID()
dailyID = customIpyData.GetDailyID()
if dailyID not in customDailyIDList:
customDailyIDList.append(dailyID)
- customType = 2
- dailyTimeInfoList.append([customType, customIpyData.GetOpenTimeList(), customIpyData])
- GameWorld.Log(" 增加本日合服日常活动信息: customType=%s,dailyID=%s,dataID=%s" % (customType, dailyID, dataID))
- GameWorld.Log(" 今天定制的合服日常活动ID列表: %s" % (customDailyIDList))
+ if customIpyData.GetMixServerDay() == mixServerDay:
+ todayCustomIDList.append(dataID)
+ customType = 2
+ dailyTimeInfoList.append([customType, customIpyData.GetOpenTimeList(), customIpyData])
+ GameWorld.Log(" 增加本日合服日常活动信息: customType=%s,dailyID=%s,dataID=%s" % (customType, dailyID, dataID))
+ GameWorld.Log(" 定制的合服日常活动ID列表: %s" % (customDailyIDList))
+ GameWorld.Log(" 今天定制的合服日常表ID列表=%s" % (todayCustomIDList))
else:
GameWorld.Log(" 超过最大定制开服天,不定制,走常规日常配置!")
@@ -960,19 +964,21 @@
GameWorld.Log(" 本周定制的开服副本地图列表: %s" % (customMapIDList))
GameWorld.Log(" 今天定制的开服副本表ID列表=%s" % (todayCustomIDList))
elif isMixServer and mixServerDay <= maxCustomServerDayMix:
- customIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("FBStateTimeCustomMix", mixServerDay)
- if not customIpyDataList:
- customIpyDataList = []
- GameWorld.Log(" 本日定制的合服副本活动条数: %s" % len(customIpyDataList))
- for customIpyData in customIpyDataList:
+ todayCustomIDList = [] # 今天定制的数据表ID
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetFBStateTimeCustomMixCount()):
+ customIpyData = ipyDataMgr.GetFBStateTimeCustomMixByIndex(i)
dataID = customIpyData.GetID()
dataMapID = customIpyData.GetDataMapID()
if dataMapID not in customMapIDList:
customMapIDList.append(dataMapID)
- customType, startWeekDay, endWeekDay = 2, curWeekDay, curWeekDay
- fbStateTimeInfoList.append([customType, startWeekDay, endWeekDay, customIpyData])
- GameWorld.Log(" 今天要处理的合服副本状态配置: customType=%s,dataID=%s" % (customType, dataID))
- GameWorld.Log(" 本日定制的合服副本地图列表: %s" % (customMapIDList))
+ if customIpyData.GetMixServerDay() == mixServerDay:
+ todayCustomIDList.append(dataID)
+ customType, startWeekDay, endWeekDay = 2, curWeekDay, curWeekDay
+ fbStateTimeInfoList.append([customType, startWeekDay, endWeekDay, customIpyData])
+ GameWorld.Log(" 今天要处理的合服副本状态配置: customType=%s,dataID=%s" % (customType, dataID))
+ GameWorld.Log(" 定制的合服副本地图列表: %s" % (customMapIDList))
+ GameWorld.Log(" 今天定制的合服副本表ID列表=%s" % (todayCustomIDList))
else:
GameWorld.Log(" 超过最大定制开服天,不定制,走常规副本状态时间!")
@@ -1089,11 +1095,12 @@
# GameWorld.DebugLog(" 副本可否进入已经是该值: dataMapID=%s,updCanEnter=%s,canEnterKey=%s" % (dataMapID, updCanEnter, canEnterKey))
fbFuncStateKey = ShareDefine.Def_Notify_WorldKey_FBFuncState % dataMapID
- if gameWorld.GetDictByKey(fbFuncStateKey) != updStateValue:
+ beforeState = gameWorld.GetDictByKey(fbFuncStateKey)
+ if beforeState != updStateValue:
GameWorld.SendMapServerMsgEx(fbFuncStateKey, updStateValue) #通知Mapserver,设置字典
gameWorld.SetDict(fbFuncStateKey, updStateValue) #更新字典值
GameWorld.Log("副本状态变更: dataMapID=%s,updStateValue=%s,fbFuncStateKey=%s" % (dataMapID, updStateValue, fbFuncStateKey))
- __DoLogic_GameServer_ActionState(fbFuncStateKey, updStateValue)
+ __DoLogic_GameServer_ActionState(fbFuncStateKey, updStateValue, beforeState)
#else:
# GameWorld.DebugLog(" 副本状态已经是该值: dataMapID=%s,updStateValue=%s,fbFuncStateKey=%s" % (dataMapID, updStateValue, fbFuncStateKey))
@@ -1239,12 +1246,13 @@
##处理GameServer活动状态
# @param dictName 字典名
# @param isOpen 是否开启
+# @param beforeState 状态变更前的值,部分判断处理
# @return 返回值无意义
# @remarks
-def __DoLogic_GameServer_ActionState(dictName, isOpen):
+def __DoLogic_GameServer_ActionState(dictName, isOpen, beforeState=0):
#仙盟宴会
if dictName == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyParty:
- PlayerFamilyParty.FamilyPartyStateChange(isOpen)
+ PlayerFamilyParty.FamilyPartyStateChange(isOpen, beforeState)
#仙盟联赛
elif dictName == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyWar:
GameWorldFamilyWar.OnFamilyWarStateChange(isOpen)
@@ -1260,6 +1268,13 @@
#跨服PK
elif dictName == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_CrossReamPK:
CrossRealmPK.OnCrossRealmPKDailyActionStateChange(isOpen)
+ #仙盟BOSS
+ elif dictName in [ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyBoss1]:
+ PlayerFamilyBoss.OnAllFamilyBossStateChange(isOpen)
+ #骑宠BOSS
+ elif dictName in [ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_HorsePetBoss]:
+ PlayerHorsePetBoss.OnHorsePetBossStateChange(isOpen)
+
return
#-------------------------------------------------------------------------------
--
Gitblit v1.8.0