hxp
4 天以前 22f9a92aa213b3a2b691e6718d8a580895e68011
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -27,21 +27,24 @@
import ShareDefine
import IpyGameDataPY
import PlayerControl
import PlayerSignDay
import FunctionNPCCommon
import PlayerActBuyCountGift
import PlayerActLoginNew
import PlayerActTask
import IPY_GameWorld
import ItemCommon
import ItemControler
import PlayerHorse
import PlayerArena
import PlayerTask
import DBDataMgr
# 功能开启需执行的函数{功能ID:执行函数, ...} 函数需返回是否激活成功, 功能开启有需要处理功能逻辑的这里增加函数调用配置即可
FuncOpenLogicDict = {
                     ShareDefine.GameFuncID_SignDay:lambda curObj:PlayerSignDay.DoSignDayOpen(curObj),
                     ShareDefine.GameFuncID_Arena:lambda curObj:PlayerArena.DoArenaOpen(curObj),
                     ShareDefine.GameFuncID_Shop:lambda curObj:FunctionNPCCommon.DoShopOpen(curObj),
                     ShareDefine.GameFuncID_Horse:lambda curObj:PlayerHorse.DoHorseOpen(curObj),
                     }
def GetFuncOpenLVIpyData(funcID): return IpyGameDataPY.GetIpyGameData("FuncOpenLV", funcID)
@@ -52,6 +55,7 @@
    '''
    #GameWorld.DebugLog("执行触发功能开启逻辑: finishMissionIDList=%s" % finishMissionIDList, curPlayer.GetPlayerID())
    
    serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
    openFuncIDList = []
    curLV = curPlayer.GetLV()
    ipyGameData = IpyGameDataPY.IPY_Data()
@@ -82,6 +86,10 @@
        if limitMissionID and not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID):
            continue
        
        limitOpenDay = ipyData.GetLimitOpenDay()
        if limitOpenDay and serverDay < limitOpenDay:
            continue
        # 先更新值再处理开启逻辑,不能可能导致在功能开启逻辑中再开启功能引发的递归死循环
        befValue, updValue = GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID, 1)
        if befValue == updValue: