ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py
@@ -25,14 +25,18 @@
import GameWorld
import ChConfig
def GetShopTypeList(cfgID, dayIndex):
    if cfgID == None or dayIndex == None:
        return []
    ipyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
    if not ipyData:
        return []
    shopTypeList = ipyData.GetShopTypeList()
    todayShopType = shopTypeList[-1] if dayIndex >= len(shopTypeList) else shopTypeList[dayIndex]
    return todayShopType
def OnPlayerLogin(curPlayer):
    isReset = __CheckPlayerSpringSaleAction(curPlayer)
    if not isReset:
        actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {})
        # 活动中同步活动信息
        if actInfo.get(ShareDefine.ActKey_State):
            Sync_SpringSaleActionInfo(curPlayer)
    __CheckPlayerSpringSaleAction(curPlayer)
    return
def RefreshSpringSaleActionInfo():
@@ -53,24 +57,32 @@
    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {})
    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
    state = actInfo.get(ShareDefine.ActKey_State, 0)
    shopTypeList = actInfo.get(ShareDefine.ActKey_ShopTypeList, [])
    #if not state or not shopTypeList:
    #    return
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
    
    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleID) # 玩家身上的活动ID
    # 活动ID 相同的话不处理
    if actID == playerActID:
        GameWorld.DebugLog("限时特惠活动ID不变,不处理!", curPlayer.GetPlayerID())
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID)
    FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
    GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID)
    Sync_SpringSaleActionInfo(curPlayer)
    return True
    isReset = False
    if actID != playerActID:
        isReset = True
        shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
        FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, 0)
        #Sync_SpringSaleActionInfo(curPlayer)
        GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID)
    else:
        GameWorld.DebugLog("限时特惠活动ID不变,不处理!", playerID)
    playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleMailState) # 玩家身上的活动提醒邮件状态
    if actID and state and state != playerMailState:
        springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
        if springSaleIpyData and springSaleIpyData.GetMailKey() and curPlayer.GetLV() >= springSaleIpyData.GetLVLimit():
            PlayerControl.SendMailByKey(springSaleIpyData.GetMailKey(), [playerID], springSaleIpyData.GetMailItemPrize())
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, state)
            GameWorld.DebugLog("    发送新限时特惠邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID)
    if cfgID:
        Sync_SpringSaleActionInfo(curPlayer)
    return isReset
def Sync_SpringSaleActionInfo(curPlayer):
    ## 通知限时特惠活动信息
@@ -78,13 +90,15 @@
    if not actInfo:
        return
    
    if not actInfo.get(ShareDefine.ActKey_State):
        return
    #需要提前通知,所以去掉此限制
    #if not actInfo.get(ShareDefine.ActKey_State):
    #    return
    
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
    shopTypeList = actInfo.get(ShareDefine.ActKey_ShopTypeList, 0)
    if not cfgID or not shopTypeList:
    if not cfgID:
        return
    shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
    if not shopTypeList:
        return
    
    springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
@@ -97,9 +111,11 @@
        GameWorld.ErrLog("限时特惠开关时间时分配置错误!cfgID=%s" % cfgID)
        return
    
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    packInfo = ChPyNetSendPack.tagMCSpringSaleInfo()
    packInfo.StartDate = springSaleIpyData.GetStartDate()
    packInfo.EndtDate = springSaleIpyData.GetEndDate()
    packInfo.StartDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetStartDate(), openServerDay)
    packInfo.EndtDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetEndDate(), openServerDay)
    packInfo.AdvanceMinutes = springSaleIpyData.GetAdvanceMinutes()
    packInfo.ActivityTime = []
    for i, startTime in enumerate(startTimeList):
        timeInfo = ChPyNetSendPack.tagMCSpringSaleTime()