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
@@ -42,7 +44,6 @@
from types import IntType
import time
import json
#---------------------------------------------------------------------
#年月日时间格式
@@ -270,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]
                        # 每天开的, 实际开关时间只取今天的日期; 这里有个问题,全服广播的时间不是今天的, 暂不做支持,之后真有这种需求再说
@@ -1094,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))
            
@@ -1121,20 +1123,20 @@
        recMapID = universalRecData.GetValue1()
        if recMapID == mapID:
            findRecData = universalRecData
        fbOpenRecord[recMapID] = json.loads(universalRecData.GetStrValue1())
        fbOpenRecord[recMapID] = eval(universalRecData.GetStrValue1())
        
    if not findRecData:
        findRecData = recTypeListData.AddRec()
        findRecData.SetValue1(mapID)
        findRecData.SetStrValue1(json.dumps([curDayStr], ensure_ascii=False))
        findRecData.SetStrValue1(str([curDayStr]))
        fbOpenRecord[mapID] = [curDayStr]
    else:
        recordList = json.loads(findRecData.GetStrValue1())
        recordList = eval(findRecData.GetStrValue1())
        if curDayStr not in recordList:
            recordList.append(curDayStr)
            if len(recordList) > 3: #只存最近3次
                del recordList[0]
            findRecData.SetStrValue1(json.dumps(recordList, ensure_ascii=False))
            findRecData.SetStrValue1(str(recordList))
            fbOpenRecord[mapID] = recordList
        else:
            return
@@ -1150,7 +1152,7 @@
    for index in range(recTypeListData.Count()):
        universalRecData = recTypeListData.At(index)
        recMapID = universalRecData.GetValue1()
        recordList = json.loads(universalRecData.GetStrValue1())
        recordList = eval(universalRecData.GetStrValue1())
        fbOpenRecord[recMapID] = recordList
    return fbOpenRecord
@@ -1244,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)
@@ -1265,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
#-------------------------------------------------------------------------------