From a15e3af5eb36a3c4eb6016e824faca23d6d6a9dc Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 14 一月 2019 11:06:06 +0800
Subject: [PATCH] 5768 【后端】【1.5】新增8-14天活动功能(通知修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py |   83 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 76 insertions(+), 7 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
index 960bc9a..37d46ab 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
@@ -192,6 +192,14 @@
 
 ## 登录
 def ShopItemOnLogin(curPlayer):
+    if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_SuperGift):
+        GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_SuperGift, 1)
+        isGet = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftFirstRecord)
+        if isGet:#首充奖励已领取则代表超值礼包已开启过,
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SuperGiftHasOpen, 1)
+            
+    
+    SyncMysticalShopInfo(curPlayer)
     SyncShopItemTodayBuyCount(curPlayer)
     SyncSuperGiftInfo(curPlayer)
     return
@@ -234,8 +242,14 @@
     __ResetShopItemBuyCount(curPlayer, [refreshType])
     return
 
+def ShopItemOnCrossPKSeasonChange(curPlayer):
+    ## 按跨服PK赛季重置
+    refreshType = 8
+    __ResetShopItemBuyCount(curPlayer, [refreshType])
+    return
+
 def __ResetShopItemBuyCount(curPlayer, onEventTypeList):
-    #重置商店物品购买次数  1:周一0点刷新    2:周一5点刷新    3:每日0点刷新    4:每日5点刷新    5每月0点    6每月5点
+    #重置商店物品购买次数  1:周一0点刷新    2:周一5点刷新    3:每日0点刷新    4:每日5点刷新    5每月0点    6每月5点   7每3天5点  8每赛季
     syncIndexList = []
     ipyDataMgr = IpyGameDataPY.IPY_Data()
     for i in xrange(ipyDataMgr.GetStoreCount()):
@@ -272,6 +286,49 @@
         syncIndexList.append(shopItem.GetID())
     if syncIndexList:
         SyncShopItemTodayBuyCount(curPlayer, syncIndexList, True)
+    return
+
+def MysticalShopOpen(curPlayer, befLV, aftLV):
+    ##神秘限购开启
+    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('Store', {'ShopType':16}, True)
+    if not ipyDataList:
+        return
+    curTime = int(time.time())
+    syncGoodsList = []
+    for ipyData in ipyDataList:
+        limitLV = ipyData.GetLimitLV()
+        if befLV < limitLV and aftLV >= limitLV:
+            goodsID = ipyData.GetID()
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ShopItemStartTime % goodsID, curTime)
+            syncGoodsList.append(goodsID)
+            GameWorld.DebugLog('神秘限购商品%s 开卖'%goodsID, curPlayer.GetID())
+    if syncGoodsList:
+        SyncMysticalShopInfo(curPlayer)
+    return
+
+def SyncMysticalShopInfo(curPlayer):
+    ##神秘限购通知
+    packData = ChPyNetSendPack.tagMCMysticalShopTimeInfo()
+    packData.ShopTimeList = []
+    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('Store', {'ShopType':16}, True)
+    curTime = int(time.time())
+    for ipyData in ipyDataList:
+        goodsID = ipyData.GetID()
+        startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShopItemStartTime % goodsID)
+        if not startTime:
+            continue
+        if curTime - startTime >= ipyData.GetLimitValue():
+            #超时的重置
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ShopItemStartTime % goodsID, 0)
+        else:
+            goodsTime = ChPyNetSendPack.tagMCMysticalShopTime()
+            goodsTime.GoodsID = goodsID
+            goodsTime.StartTime = startTime
+            packData.ShopTimeList.append(goodsTime)
+    if not packData.ShopTimeList:
+        return
+    packData.Count = len(packData.ShopTimeList)
+    NetPackCommon.SendFakePack(curPlayer, packData)
     return
 
 ## 回购物品
@@ -326,7 +383,10 @@
 # @param tick 时间戳
 # @return 返回值真, 逻辑运行成功
 def BuyItem(curPlayer, tick):
-
+    
+    if GameWorld.IsCrossServer():
+        return
+    
     buyItemList = IPY_GameWorld.IPY_CBuyItemList()    
     itemIndex = buyItemList.GetBuyItemIndex()
     if itemIndex < 0:
@@ -421,10 +481,10 @@
     jobItemList = ipyData.GetJobItem()
     totalItemList = []
     if itemID:
-        jobItemID = __GetShopJobItem(job, itemID, jobItemList)
+        jobItemID = GetShopJobItem(job, itemID, jobItemList)
         totalItemList.append([jobItemID, itemCount * clientBuyCount, isBind])
     for itemIDEx, itemCountEx, isBindEx in itemListEx:
-        jobItemID = __GetShopJobItem(job, itemIDEx, jobItemList)
+        jobItemID = GetShopJobItem(job, itemIDEx, jobItemList)
         totalItemList.append([jobItemID, itemCountEx * clientBuyCount, isBindEx])
     #允许价钱配置0,用来免费购买
     if not totalItemList:
@@ -543,7 +603,7 @@
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
     return
 
-def __GetShopJobItem(job, itemID, jobItemList):
+def GetShopJobItem(job, itemID, jobItemList):
     ## 获取商城物品对应的职业物品, 职业从1开始
     for jobItemIDList in jobItemList:
         if type(jobItemIDList) not in [list, tuple]:
@@ -586,8 +646,13 @@
     if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
         return not PlayerFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
     
-    if itemIndex in dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')):
-        return not CheckSuperGiftBuy(curPlayer, itemIndex)
+#    if itemIndex in dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')):
+#        return not CheckSuperGiftBuy(curPlayer, itemIndex)
+    if shopNPCID == 16:#神秘限购
+        startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShopItemStartTime % itemIndex)
+        curTime = int(time.time())
+        return not startTime or curTime - startTime >= limitValue
+        
 #    
 #    limitPlusDict = {shopItem.GetLimitPlusType1():shopItem.GetLimitPlusValue1(),
 #                     shopItem.GetLimitPlusType2():shopItem.GetLimitPlusValue2(),
@@ -638,6 +703,10 @@
             #活动结束 重置
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SuperGiftStartTime, 0)
     else:
+        if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftHasOpen):
+            #老号已开启过超值礼包则不再开启
+            return
+        
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SuperGiftStartTime, curTime)
         addItemList = IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList', 2)
         PlayerControl.SendMailByKey('SellMail2', [curPlayer.GetID()], addItemList)

--
Gitblit v1.8.0