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