From c96e8ed5c248f3ff2edbee5f4a7d332b0e153a1e Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期三, 05 十二月 2018 14:31:31 +0800
Subject: [PATCH] 5183 仙盟BOSS开启输出

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py |  135 ++++++++++++++++++++++++++++----------------
 1 files changed, 85 insertions(+), 50 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 421db9c..b14d26d 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
@@ -69,6 +69,7 @@
 
 import random
 import math
+import time
 #---------------------------------------------------------------------
 ##开始交易
 # @param curPlayer 玩家实例
@@ -191,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
@@ -201,7 +210,6 @@
 def ShopItemOnDay(curPlayer, onEventType):
     if onEventType == ShareDefine.Def_OnEventType:
         UpdataSuperGiftTime(curPlayer, True)
-        SyncSuperGiftInfo(curPlayer)
         OSSaleOpenMail(curPlayer)
         refreshType = [3]
     elif onEventType == ShareDefine.Def_OnEventTypeEx:
@@ -272,6 +280,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
 
 ## 回购物品
@@ -541,8 +592,6 @@
     SyncShoppingResult(curPlayer, itemIndex, clientBuyCount)
     if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
-    if itemIndex in dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')):
-        UpdataSuperGiftTime(curPlayer)
     return
 
 def __GetShopJobItem(job, itemID, jobItemList):
@@ -588,8 +637,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(),
@@ -629,67 +683,48 @@
 
 #超值礼包购买时间
 def UpdataSuperGiftTime(curPlayer, isOnday=False):
-    superGiftData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftData)
-    giftIndex, startDay = superGiftData%10, superGiftData/10
-    superGiftTimeList = IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')
-    if giftIndex >= len(superGiftTimeList):
-        return
-    if isOnday and not giftIndex:
-        return
-    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)+1
-    newIndex = giftIndex
+    curTime = int(time.time())
     if isOnday:
-        lastDays = 0
-        pastDay = openServerDay - startDay
-        for i in xrange(giftIndex-1, len(superGiftTimeList)):
-            lastDays += superGiftTimeList[i][1]
-            if pastDay < lastDays:
-                break
-            if pastDay >= lastDays:
-                newIndex = i+2
-        
+        startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftStartTime)
+        if not startTime:
+            return
+        superGiftTimeList = IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')
+        maxDay = max([info[1] for info in superGiftTimeList])
+        if curTime - startTime >= maxDay * 86400:
+            #活动结束 重置
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SuperGiftStartTime, 0)
     else:
-        newIndex = min(len(superGiftTimeList), giftIndex+1)
+        if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftHasOpen):
+            #老号已开启过超值礼包则不再开启
+            return
         
-    if newIndex == giftIndex:
-        return
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SuperGiftData, openServerDay*10+newIndex)
-    #通知
-    if not isOnday:
-        SyncSuperGiftInfo(curPlayer)
-    if newIndex == 1:
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SuperGiftStartTime, curTime)
         addItemList = IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList', 2)
         PlayerControl.SendMailByKey('SellMail2', [curPlayer.GetID()], addItemList)
+        SyncSuperGiftInfo(curPlayer)
     return True
 
 def SyncSuperGiftInfo(curPlayer):
-    superGiftData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftData)
-    giftIndex, startDay = superGiftData%10, superGiftData/10
-    superGiftTimeList = IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')
-    if giftIndex == 0 or giftIndex > len(superGiftTimeList):
+    startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftStartTime)
+    if not startTime:
         return
-    giftID, day = superGiftTimeList[giftIndex-1]
-    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)+1
-    remainDay = max(0, day - openServerDay+startDay)-1
-    
     packData = ChPyNetSendPack.tagMCSuperGiftInfo()
-    packData.GiftID = giftID
-    packData.EndtDate = str(GameWorld.GetDatetimeByDiffDays(remainDay))[:10]
+    packData.StartTime = startTime
     NetPackCommon.SendFakePack(curPlayer, packData)
     return
 def CheckSuperGiftBuy(curPlayer, giftID):
     #超值礼包是否可购买
-    superGiftData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftData)
-    giftIndex, startDay = superGiftData%10, superGiftData/10
-    superGiftTimeList = IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')
-    if giftIndex == 0 or giftIndex > len(superGiftTimeList):
+    startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuperGiftStartTime)
+    if not startTime:
         return
-    curGiftID, day = superGiftTimeList[giftIndex-1]
-    if giftID != curGiftID:
+    
+    superGiftTimeDict = dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList'))
+    totalDay = superGiftTimeDict.get(giftID, 0)
+    if not totalDay:
         return
-    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)+1
-    if not max(0, day - openServerDay+startDay):
+    curTime = int(time.time())
+    if (curTime - startTime)/86400 >= totalDay:
+        #已结束
         return
     return True
 

--
Gitblit v1.8.0